我写了一个简单的类演员与整数和大量的布尔成员: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)。不,我不在任何地方使用新的或* - 操作符!