std::string
私は、ゲッターを介して真に const または実質的に const である静的を格納したいクラスを持っています。
私はいくつかの直接的なアプローチを試みました
1.
const static std::string foo = "bar";
2.
const extern std::string foo; //defined at the bottom of the header like so
...//remaining code in header
}; //close header class declaration
std::string MyClass::foo = "bar"
/#endif // MYCLASS_H
私も試してみました
3.
protected:
static std::string foo;
public:
static std::string getFoo() { return foo; }
これらのアプローチは、それぞれ次の理由で失敗します。
const string MyClass::foo
エラー:非リテラル型の静的データ メンバーのクラス内初期化- に指定されたストレージ クラス-- orと組み合わせるのが
foo
好きではないようですextern
const
static
- コードの他の部分やゲッター関数の戻り行によって生成された多くの「未定義の参照」エラー
ソースファイルではなくヘッダー内に宣言したい理由。これは拡張されるクラスであり、他のすべての関数は純粋な仮想であるため、現在、これらの変数以外にソース ファイルを持つ理由はありません。
では、これを行うにはどうすればよいでしょうか。