所以我在标题
中有这个类class C{
int b [2];
init();
}
在C.cpp我有
C::init(){
bK [2] = {3,7};
}
我尝试初始化类变量b,这是一个数组
然后编译器返回错误expected ; before { token
和expected primary expression before { token
我做错了什么以及如何正确初始化数组类变量?
答案 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;
}
编辑:经过一些测试后,我发现它有问题。上面的代码中没有错误。如果要内联初始化整个数组,则必须在其声明语句中完成。