ここで奇妙な問題が発生しました。いくつかの仮想メソッドを持つクラスがあると仮定します。特定の状況下では、このクラスのインスタンスはこれらのメソッドの1つを呼び出す必要があります。ほとんどの場合、そのステージでは問題は発生しませんが、仮想メソッドへのポインタがNULLであるため(VSに示されているように)、仮想メソッドを呼び出せないことが判明し、メモリアクセス違反の例外が発生する場合があります。どうしてそれが起こるのでしょうか?
アプリケーションはかなり大きくて複雑なので、どのような低レベルの手順がこの状況につながるのかはよくわかりません。生のコードを投稿することは役に立ちません。
UPD:わかりました。問題の表現はかなり不明確なので、コードは次のようになります。
void MyClass::FirstMethod() const { /* Do stuff */ }
void MyClass::SecondMethod() const
{
// This is where exception occurs,
// description of this method during runtime in VS looks like 0x000000
FirstMethod();
}
コンストラクタやデストラクタは関与しません。