c ++类数组初始化

时间:2011-04-20 15:43:37

标签: c++ arrays class variables initialization

所以我在标题

中有这个类
class C{

   int b [2];

   init();

}

在C.cpp我有

C::init(){

   bK [2] = {3,7};
}

我尝试初始化类变量b,这是一个数组

然后编译器返回错误expected ; before { tokenexpected primary expression before { token

我做错了什么以及如何正确初始化数组类变量?

5 个答案:

答案 0 :(得分:3)

使用;结束您的班级定义。

class C {

   int b [2];

   init();

};

此外,您无法初始化类似于标准C ++中声明的数组。

答案 1 :(得分:1)

你不能在前C ++ 0x C ++中做到这一点。

答案 2 :(得分:1)

标准(2003)不允许这样做。在类中声明的数组无法初始化。

你可以做的是:

C::init(){
   b[0] = 3;
   b[1] = 7;
}

在C ++ 0x中,您可以这样做(如果您选择使用std::vector):

class C
{
   std::vector<int> b;
   void init() 
   { 
       b = {3,7}; 
   }
};

参见在线演示:http://www.ideone.com/NN5aT

答案 3 :(得分:0)

C::init(){

   bK [0] = 3;
   bk [1] = 7;
}

答案 4 :(得分:0)

您应该将类​​成员声明为public,private或protected。而且你需要一个init()的返回类型。您还可能需要在类定义结束时使用分号,而c ++类成员则无法使用分号。

您应该使用构造函数而不是init()。这样你就不必在每次声明一个对象后调用init(),它就会为你完成。

class C{
private:
   int b[2];
public:
   C();

};

C::C()
{
    b[0] = 2;
    b[1] = 3;
}

编辑:经过一些测试后,我发现它有问题。上面的代码中没有错误。如果要内联初始化整个数组,则必须在其声明语句中完成。