次のコードはビルドされません。
struct some_struct {
some_struct() {
... do something here to specify size of v; how ??
}
enum {
ZERO,
ONE,
TWO
};
static std::vector<std::string> v(TWO);
};
アイデアに感謝します。これが違法な使用であることを示唆するものは何もないようです。
タイプミス:ベクトル構文と修正を修正しました:私は2010年ではなく2005/2008年にのみテストしました。質問した人へのエラーメッセージ:
error C2061: syntax error : identifier 'TWO'
さらに編集:
コンパイラv
は、型を返す関数であると考えているようstd::vector<std::string>
です。これはすべてaの中にありますstruct
(これをさらに明確にするために、投稿をさらに修正しました)。おそらく、型と混同するsize引数を省略し、コンストラクターのどこかでサイズを宣言する必要がありますか?このベクトルが構造体の静的データメンバーになることを意味しました。コンパイラにこれを理解させるにはどうすればよいですか?
注:Linuxでは、元々持っていたものに似たスタンドアロンコードでテストしました(構造体なし)...したがって、この修正を行ったLinuxではコンパイルされない可能性があります。そこで、Linuxで問題なく構築されたというコメントを削除しました。謝罪。