-1

我有一个像这样的 C++ 头文件:

class someClass : public someBaseClass
{
public:
    someClass();
    ~someClass();

private:
    Text playText; //declare text object
};

它的 C++ 源文件是:

someClass::someClass() : playText("Play") //instantiate text object
{
}

someClass::~someClass()
{
}

然后我有另一个类,它有一个静态成员someClass

class anotherClass
{
public:
    anotherClass();
    ~anotherClass();
private:
    static someClass className; //declare someClass object
};

对应的 C++ 源文件:

anotherClass::anotherClass()
{
}

anotherClass::~anotherClass()
{
}

someClass anotherClass::className; //must do because its static

我的问题是,当我关闭我的应用程序时,我收到一条错误消息:

Unhandled exception at 0x6903a9e0 in Breakout.exe: 0xC0000005: Access violation reading location 0x00000054.

但奇怪的是,当我: playText("Play")在 someClass 构造函数中注释掉我的代码部分时,消息消失了。我基本上无法实例化playText,否则我会收到错误(仅当我在运行时关闭应用程序时)。

我完全糊涂了,找不到任何关于为什么会发生这种情况的信息,所以有谁知道为什么会发生这种情况以及我该如何解决?

谢谢。

4

1 回答 1

0

class是保留关键字。您不能在此处将其用作标识符:

static someClass class;

您必须为静态成员变量使用另一个名称。我很惊讶这甚至可以编译。

于 2012-12-08T00:32:00.013 回答