0

メンバー変数として 2 次元のベクトルがあり、コンストラクターによって初期化されました。静的として宣言する必要があるため、間違った構文でコンパイラ エラーが発生します。

次のように宣言および定義されています。

 std::vector< std::vector<int> > knowledge( 1, std::vector<int>(1, 0) );

クラスのプライベート部分で。

その行でコンパイラ エラーが発生します。

expected identifier before numeric constant
expected »,« or »...« before numeric constant

間違いはどこですか?

4

3 に答える 3

1

静的クラス メンバーは、クラス内で宣言する必要がありますが、外部で定義する必要があります。例

class C {
    static std::vector<std::vector<int>> knowledge;
};

std::vector<std::vector<int>> C::knowledge( 1, std::vector<int>(1, 0) );
于 2013-11-07T15:59:57.753 に答える
1

静的クラス メンバーを使用するには、このメンバーをクラスの外部で定義する必要があるため、コンパイラはそれをメモリに割り当てます。

クラス外で対応する変数を定義したら、それを初期化して使用できます。

于 2013-11-07T15:58:02.160 に答える
1

これを読んで、次のようにします。

// 
// In Foo.h...
// 
#include <vector>

class Foo {
    // ...
private: 
    static std::vector< std::vector<int> > knowledge ;
} ;

// 
// In Foo.cpp...
//
std::vector< std::vector<int> > Foo::knowledge(1, std::vector<int>(1, 0));
于 2013-11-07T16:01:07.957 に答える