我有一个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
,否则我得到一个错误(只有当我在运行期间从不关闭应用程序时)。
我完全困惑,无法找到为什么发生这种情况的任何事情,所以没有人知道为什么发生这种情况,我该如何解决它?
谢谢。
'class'是一个**关键字**。将该成员重命名为其他内容。 – StoryTeller
除了'class'是一个关键字这个明显的问题(这里使用的可能仅仅是为了演示目的吗?),我一眼就看不到严重的问题。我认为,问题来自真正构造函数中的一些细节,可能是'someBaseClass'之一?请注意,静态初始化在输入'main()'之前运行,并且不确定初始化不同静态对象的顺序。所以,如果你有多个这样的对象,并且他们甚至互相引用,请注意... –
请寄出'Text'类的代码。 –