不正にキャストされたオブジェクトに対してメソッドが呼び出されました
アクセス エラー への移動
有効なメモリ内にないメソッドを呼び出すと、"不正にキャストされたオブジェクトに対してメソッドが呼び出されました
" エラーが発生します。以下の例では、2 つの someclass
オブジェクトから成る配列を作成しますが、3 番目のオブジェクトのメソッドを呼び出そうとしています。配列のインデックスは 0 から始まるため、この場合は、初期化されていないメモリにアクセスすることになります。
#include <tchar.h>
#pragma hdrstop
#include<stdio.h>
#include<dir.h>
class someclass{
int fnumber;
public:
int getnumber(){return fnumber;}
void setnumber(int nw){fnumber = nw;}
int doublev(int val){return val*2;}
int publicalval;
};
void myf()
{
someclass *myc = new someclass[2];
int answ;
answ = myc[2].doublev(5); // error
delete[] myc;
}
int _tmain(int argc, _TCHAR* argv[])
{
myf();
return 0;
}