0
私のC++クラスでプライベート変数を初期化するにはどうすればよいですか?std :: stringのプライベートクラス変数を初期化する&
ああ:
class A {
private:
std::string& name;
public:
A(void);
~A(void);
bool load(std::string& name);
};
がa.cpp:
#include <string>
#include "a.h"
A::A(void) {
this->name = "";
}
A::~A(void) {}
bool A::load(std::string& name) {
this->name = name;
}
エラー:
a.cpp: In constructor ‘A::A()’:
a.cpp:3:1: error: uninitialized reference member in ‘std::__cxx11::string& {aka class std::__cxx11::basic_string<char>&}’ [-fpermissive]
A::A(void) {
^
In file included from a.cpp:2:0:
a.h:3:22: note: ‘std::__cxx11::string& A::name’ should be initialized
std::string& name;
私は(a.cppに)私のコンストラクタでそれを初期化してきたが、それ依然としてエラーが発生しています。
なぜ 'name'を' string& 'にする必要がありますか?なぜ単に文字列ではないのですか?クラスデータメンバを参照するのは、最初から実際の文字列には初期化されていないので、複雑なものです。 –