我有一些产生错误的C ++代码:
class foo{
public:
int a;
int b;
};
foo test;
test.a=1; //error here
test.b=2;
int main()
{
//some code operating on object test
}
我收到此错误:
error: expected constructor, destructor, or type conversion before '.' token
错误意味着什么,我该如何解决?
答案 0 :(得分:3)
它被称为构造函数。包括一个将所需值作为参数。
像
class foo
{
public:
foo(int aa, int bb)
: a(aa), b(bb) // Initializer list, set the member variables
{}
private:
int a, b;
};
foo test(1, 2);
如chris所述,如果字段为public
,您也可以使用聚合初始化,如示例所示:
foo test = { 1, 2 };
这也适用于C ++ 11兼容编译器和构造函数,如我的例子所示。
答案 1 :(得分:1)
这应该是:
class foo
{
public:
int a;
int b;
};
foo test;
int main()
{
test.a=1;
test.b=2;
}
你不能在方法/函数之外编写代码,只能声明变量/类/类型等。
答案 2 :(得分:0)
您需要一个默认构造函数:
//add this
foo(): a(0), b(0) { };
//maybe a deconstructor, depending on your compiler
~foo() { };
答案 3 :(得分:0)
您无法在函数外部调用变量初始化。如评论中所述
test.a=1
test.b=2
因此无效。如果您确实需要初始化,请使用
之类的构造函数class foo
{
public:
foo(const int a, const int b);
int a;
int b;
}
否则你可以进行初始化,例如进入主要功能。