我在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;
}
答案 0 :(得分:12)
不,不是,这是一个零参数的函数。
要默认初始化变量,请使用
Chest chest;
在C ++ 11中,此语法可用于值初始化。
Chest chest{};
在C ++ 03中,需要一个复杂的(因为许多编译器错误)解决方法,Boost库值得一提,它很容易使用:
boost::value_initialized<Chest> chest;
答案 1 :(得分:6)
Chest chest();
你可能不相信,对构造函数的调用
Chest::Chest();
而是声明一个函数。创建chest
的正确方法是
Chest chest;
只有当您定义了带参数的构造函数时,才应使用括号。
string s;
string s2("Hello");