所以我有这个类在头C++类的数组初始化
class C{
int b [2];
init();
}
和C.cpp我有
C::init(){
bK [2] = {3,7};
}
由此我尝试初始化类变量b,其是一个数组
但随后的编译器返回错误expected ; before { token
和expected primary expression before { token
我做错了什么,如何正确初始化数组类变量?
所以我有这个类在头C++类的数组初始化
class C{
int b [2];
init();
}
和C.cpp我有
C::init(){
bK [2] = {3,7};
}
由此我尝试初始化类变量b,其是一个数组
但随后的编译器返回错误expected ; before { token
和expected primary expression before { token
我做错了什么,如何正确初始化数组类变量?
用;
结束您的班级定义。
class C {
int b [2];
init();
};
此外,您不能像标准C++中的声明那样初始化一个数组。
你不能在C++ 0x C++之前做到这一点。
C::init(){
bK [0] = 3;
bk [1] = 7;
}
这是标准(2003)所不允许的。在课堂上声明的数组不能初始化。
你可以做的是这样的:
C::init(){
b[0] = 3;
b[1] = 7;
}
在C++ 0x中,你可以做到这一点(如果您选择使用std::vector
):
class C
{
std::vector<int> b;
void init()
{
b = {3,7};
}
};
您应该声明您的班级成员为公共,私人或受保护的。你也需要为你的init()返回一个类型。你也可能需要在你的类定义的末尾使用分号,这是你无法用C++类成员完成的。
您应该使用构造函数而不是init()。这样你就不必在每次声明一个对象后调用init(),它都会为你完成。
class C{
private:
int b[2];
public:
C();
};
C::C()
{
b[0] = 2;
b[1] = 3;
}
编辑:做一些测试后,我发现这是越野车。上面的代码没有错误。如果你想内联初始化整个数组,它必须在它的声明语句中完成。
这与您的其他问题有何不同? http://stackoverflow.com/questions/5732798/c-array-assignment-of-multiple-values – 2011-04-20 16:12:11