Я создавал класс, который берет кучу изображений и накладывает их на один BMP. По какой-то причине после запуска кода я получаю ошибку segfault и отследил ее до этого метода. По сути, оператор if проверяет, существует ли допустимый индекс в массиве изображений для размещения этого нового изображения. Если он действителен, то он удаляет все, что было ранее, и устанавливает этот индекс для этого нового изображения. Класс называется Scene и состоит из массива указателей изображений. Поэтому я заменяю изображение, на которое указывает один из этих указателей. Как-то не работает, хотя. Если указатель равен NULL, команда delete не должна вызывать проблем, поэтому я не вижу, что может пойти не так. Этот код действует на сцену, которая имеет массив указателей изображения длиной 5.
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);