我一直在創建一個類,它需要一堆圖像並將它們覆蓋到一個BMP上。出於某種原因,在運行代碼時,我得到了段錯誤,並且我已經將其跟蹤到了這種方法。從本質上說,if語句會檢查圖像數組中是否存在有效的索引以放置此新圖像。如果該圖像有效,則會刪除先前存在的任何圖像,並將該索引設置爲此新圖像。該類被稱爲場景,並由一組圖像指針組成。所以我正在做的是取代那些指針指向的圖像。不知何故,它不工作。如果指針爲NULL,那麼刪除命令不應該引起任何問題,所以我沒有看到有什麼問題。此代碼正在具有長度爲5的圖像指針陣列的場景上運行。調用時總線錯誤刪除(C++)
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;
}
我也註釋掉的主要方法,使被調用的函數只有
Scene* set = new Scene(5);
set->addpicture("in_01.bmp", 0, 0, 0);
請你修復代碼縮進? – 2010-02-09 01:44:05
哪條線路崩潰? – 2010-02-09 01:46:19
刪除前無需檢查空值。另外,爲什麼不把'Image * extra'與下面的行結合起來? – GManNickG 2010-02-09 01:46:20