たくさんの画像を取り、それらを 1 つの BMP にオーバーレイするクラスを作成してきました。何らかの理由でコードを実行すると、segfault が発生し、このメソッドまで追跡しました。基本的に、if ステートメントは、この新しい画像を配置する画像の配列に有効なインデックスがあるかどうかを確認します。有効な場合は、以前にあったものをすべて削除し、そのインデックスをこの新しい画像に設定します。クラスは Scene と呼ばれ、Image ポインターの配列で構成されます。だから私がやっていることは、それらのポインタの1つが指している画像を置き換えることです. どういうわけかそれはうまくいきません。ポインターが NULL の場合、delete コマンドは問題を引き起こさないはずなので、何が問題なのかわかりません。このコードは、長さ 5 の Image ポインターの配列を持つシーンで動作しています。
void Scene::addpicture(const char* FileName, int index, int x, int y)
{
if (index<0 || index>maxnum-1)
{
cout << "index out of bounds" << endl;
}
else
{
Image* extra;
extra = new Image;
extra->ReadFromFile(FileName);
delete imagelist[index];
imagelist[index] = extra;
imagelist[index]->xcoord=x;
imagelist[index]->ycoord=y;
}
}
誰でも助けることができます。それは大歓迎です。
ありがとう
コンストラクターを含めるように編集しました。
Scene::Scene(int max)
{
Image** imagelist = new Image*[max];
for(int i=0; i<max; i++)
{imagelist[i] = NULL;}
maxnum = max;
}
main メソッドもコメントアウトして、呼び出される関数のみを
Scene* set = new Scene(5);
set->addpicture("in_01.bmp", 0, 0, 0);