3

重複の可能性:
プライベート静的メンバーの初期化

これは本当に私を夢中にさせます.共有メモリとして使用するクラス内で静的プライベートベクトルを宣言したいと思います.

私のベクトル宣言は次のようになります。

private: static vector< pair< string, bool > > flags;

これはクラス内で行われますが、空のベクターとして初期化するにはどうすればよいですか? 多くの場所で使用する必要があるため、init がクラス自体にある場合に最適です。他のオプションはありますがmain()、それ以上のものはありません。

ベクターで動作する setFlag() メソッドと getFlag() メソッドがありますが、宣言だけで定義がないため、あらゆる種類のリンカー エラーが発生します。

4

2 に答える 2

6

ベクトルを処理するsetFlag()メソッドとgetFlag()メソッドがありますが、宣言のみがあり、定義がないため、あらゆる種類のリンカーエラーが発生します。

クラス実装ファイル(または別のソースファイル)で初期化する必要があります。

vector< pair< string, bool > > MyClass::flags;
于 2012-11-11T17:43:15.497 に答える
2

以下を実装するファイルに定義を追加する必要がありますYourClass

vector< pair< string, bool > > YourClass::flags;

この行は、空のベクトルを初期化するデフォルトのコンストラクターを呼び出します。

于 2012-11-11T17:43:05.653 に答える