次のような 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
か、エラーが発生します(これは、実行時にアプリケーションを閉じたときにのみ発生します)。
私は完全に混乱していて、なぜこれが起こるのかについて何も見つけることができないので、誰がなぜこれが起こるのか、どうすれば修正できるのか知っていますか?
ありがとう。