我用整数和很多布尔成员编写了一个简单的 Actor 类:
这是 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){}
...
那是来自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();
这编译没有任何错误,
但是如果我运行该程序,我会在一开始就遇到一个奇怪的段错误。
现在,如果我将初始化列表中的所有布尔值放入注释 (//,left(false)) 并让 gcc 编译所有内容,程序运行完美!
怎么了?我认为最好通过初始化列表来初始化所有类成员。
这可能是一个 g++ 错误吗?
我已经尝试过使用 left() 而不是 left(false)。不:我没有在任何地方的程序中使用 new- 或 *- 运算符!