Max*_*Max 3 c++ compiler-errors most-vexing-parse
我得到的编译错误structure required on left side of . or .*的chest.contents[0],而且chest是一个结构:
class Item {
public:
int id;
int dmg;
};
class Chest {
public:
Item contents[10];
};
int main()
{
Chest chest();
Item item = chest.contents[0];
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*igt 12
不,不是,它是一个零参数的函数.
要默认初始化变量,请使用
Chest chest;
Run Code Online (Sandbox Code Playgroud)
在C++ 11中,此语法可用于值初始化.
Chest chest{};
Run Code Online (Sandbox Code Playgroud)
在C++ 03中,需要一个复杂的(因为许多编译器错误)解决方法,Boost库可以很容易地使用它:
boost::value_initialized<Chest> chest;
Run Code Online (Sandbox Code Playgroud)
Chest chest();
Run Code Online (Sandbox Code Playgroud)
不是你可能会相信的,是对构造函数的调用
Chest::Chest();
Run Code Online (Sandbox Code Playgroud)
而是一个函数的声明.创建你的正确方法chest是
Chest chest;
Run Code Online (Sandbox Code Playgroud)
只有当您定义了带参数的构造函数时,才应使用括号.
string s;
string s2("Hello");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2291 次 |
| 最近记录: |