可能重复:
Member initialization of a data structure’s members
编辑:
我最后输入了标题,它给了我一个相关问题的LSIT,就像通常那样。在这个列表的底部是完全相同的问题。(使用完全相同的代码;)。
Member initialization of a data structure's members
阿拉克完全回答了。看来我需要投票来结束我自己的问题?
你好,
我有一门课看起来像这样:
class Button
{
private:
SDL_Rect box;
public:
Button(int x, int y, int w, int h);
}
盒子在哪
these
SDL的人。与gcc一起运行-weffc++,只是因为我想知道警告是什么样子,所以抱怨初始化器列表,
file.cpp||In constructor 'Button::Button(int, int, int, int)':|
file.cpp|168|error: 'Button::box' should be initialized in the member initialization list|
我想安抚一下。不过,我想不出这种愚蠢的语法。我试过了
Button::Button(int x, int y, int w, int h ) :
box(0,0,0,0)
但这只会导致
file.cpp||In constructor 'Button::Button(int, int, int, int)':|
file.cpp|171|error: expected identifier before '{' token|
file.cpp|171|error: member initializer expression list treated as compound expression|
file.cpp|171|error: left-hand operand of comma has no effect|
file.cpp|171|error: right-hand operand of comma has no effect|
file.cpp|171|error: right-hand operand of comma has no effect|
file.cpp|171|error: no matching function for call to 'SDL_Rect::SDL_Rect(int)'|
c:\programming\mingw-4.4.0\bin\..\lib\gcc\mingw32\4.4.0\..\..\..\..\include\SDL\SDL_video.h|50|note: candidates are: SDL_Rect::SDL_Rect(const SDL_Rect&)|
c:\programming\mingw-4.4.0\bin\..\lib\gcc\mingw32\4.4.0\..\..\..\..\include\SDL\SDL_video.h|50|note: SDL_Rect::SDL_Rect()|
我试过
box = blah
或
box.x = blah
或
box.x(blah)
但是他们失败了。
我也尝试过
box({0,0,0,0})
和
box{0,0,0,0}
,
file.cpp|169|error: extended initializer lists only available with -std=c++0x or -std=gnu++0x|
file.cpp|171|error: expected identifier before '{' token|
我真的不想编译C++0x,真的。特别是当我希望这是跨平台的时候,我不认为很多东西支持C++ 0x。
最后我设法摆脱了:
Button::Button(int x, int y, int w, int h ) :
box()
{
box.x = x;
box.y = y;
box.w = w;
box.h = h;
}
这对我来说似乎毫无意义。这是正确的方法吗?这不是没有初始化器列表吗?