我的代码遇到了一个非常奇怪的问题。 我有以下课程:
class Test
{
int a;
string name;
public:
Test(){a = 0; name = "foo";}
void setArguments(int number, string b){
name = b;
a = number;
}
};
当我尝试使用
调用构造函数时 int main(void){
Test a = Test();
return 0;
}
我可以构建代码,但无法运行它。我甚至无法调试它。什么错误的想法?
编辑1:我开始认为这是编译器相关的问题。我使用MinGW以及MSYS和C ++ 11标准
答案 0 :(得分:1)
这个代码甚至构建了吗?
在class
身体之后没有分号。 }
没有关闭setArguments
。
答案 1 :(得分:0)
可能您有C#/ Java背景,这就是您尝试使用该语法实例化对象a
的原因。您可以使用以下方法解决问题:
int main(void){
Test a;
return 0;
}
C ++中不是指针的对象必须始终在声明构造函数时调用它们。
答案 2 :(得分:0)
main
中的代码基本上遵循以下内容:
使用复制构造函数将临时对象复制到a
。更好的方法是编写以下内容以避免临时性:Test a;