我寫了一個簡單的類演員與整數和大量的布爾成員:C++ 11段錯誤,在初始化列表中的一些布爾變量
下面是來自actor.cpp文件
Actor::Actor()
:X(0),Y(0),W(14),H(14),speedX(0),speedY(0)
,left(false),right(false),up(false),North(false),
East(false),South(false),West(false),NorthEast(false),
NorthWest(false),SouthEast(false),SouthWest(false){}
的exerpt ...
而且從actor.h頭文件
class Actor
{
private:
int X;
int Y;
unsigned short int W;
unsigned short int H;
unsigned short int speedX;
unsigned short int speedY;
bool left;
bool right;
bool up;
bool North;
bool East;
bool South;
bool West;
bool NorthEast;
bool NorthWest;
bool SouthEast;
bool SouthWest;
public:
Actor();
~Actor();
這編譯沒有任何錯誤那是,
但是如果我運行該程序,我會在開始時遇到一個奇怪的段錯誤。
現在,如果我把所有的bools放入註釋(//,left(false))中並且讓gcc編譯所有東西,程序就可以完美運行!
出了什麼問題?我認爲通過初始化列表初始化所有類成員會更好。
難道這是一個g ++的bug?
我已經嘗試使用left()而不是left(false)。不,我不在任何地方使用新的或* - 操作符!