将静态二维数组定义为私有

时间:2013-11-07 15:51:44

标签: c++ vector multidimensional-array static

我有一个二维向量作为成员变量,并由构造函数初始化它。 既然我必须将它声明为静态,我会因错误的语法而遇到编译器错误。

声明并定义为:

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

在班级的私人部分。

我在那一行得到了编译器错误:

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

错误在哪里?

3 个答案:

答案 0 :(得分:1)

对于使用静态类成员,您必须在类外部定义此成员,因此编译器将在内存中分配它。

在类外定义相应的变量后,可以初始化并使用它。

答案 1 :(得分:1)

静态类成员需要在类中声明,但在外部定义。实施例

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

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

答案 2 :(得分:1)

阅读this然后执行此操作:

// 
// 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));