Я встречаюсь с проблемой при инициализации изображения.указатель изображения на инициализацию указателя в C++
У меня есть класс, как это:
Class MyImage
{
private:
unsigned int** image;
const unsigned int w;
const unsigned int h;
public:
MyImage(unsigned int** _image,unsigned int _w,
unsigned int _h); // copy constructor
}
, кажется, если я использую конструктор копирования, как описано выше, нужно удалить изображение первого, как показано ниже:
MyImage(unsigned int** _image,unsigned int _w,unsigned int _h)
{
if (image)
{
for (int i = 0;i < w;++i)
delete[] image[i];
delete[] image;
}
// .. copy _image to imge
}
однако, если вес и h- const, кажется, что w и h должны быть инициализированы в списке инициализации, как показано ниже:
MyImage(unsigned int** _image,unsigned int _w,unsigned int _h): w(_w),h(_h)
{
// ..code
}
то я не могу d elete, потому что w изменяется перед ним. Мой вопрос: что мне делать, если я не хочу исключать конструкцию const в w и h? Любой метод? Благодарю.
' Кажется, что ...', к сожалению, это утверждение неверно. Никакой конструктор никогда не должен удалять то, что уже существует, потому что все конструкторы начинаются с неинициализированных объектов. Ваша проблема - это что-то другое. Отправьте еще один код. – john
Этот код является абсолютно неправильным. 'image' всегда будет недопустимым указателем, и вы попытаетесь удалить что-то, чего там нет. – Gorpik
это конструктор копирования? :) –