无法在构造函数中实例化对象

时间:2012-12-08 00:29:45

标签: c++ object static instantiation

我有一个像这样的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.

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

我完全感到困惑,无法找到有关为什么会发生这种情况的事情,所以有人知道为什么会发生这种情况以及如何解决这个问题吗?

感谢。

1 个答案:

答案 0 :(得分:0)

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

static someClass class;

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