В C++
, У меня есть функция, которая возвращает объект первого класса по значению, как это:объекта, возвращаемый из вызовов функций деструктора
Image Video::getFrame(int frame) {
Image img(...);
... processing ...
return img;
}
После того, как значение возвращаются и img
выходит из области видимости, то Image
вызывается деструктор, уничтожая все данные внутри объекта. Поэтому всякий раз, когда я делаю это:
Image frame = video.getFrame(10);
frame
появляется, как будто она полностью неинициализированная.
Я думал, что возврат по стоимости должен был сделать полную, отдельную копию img
. Почему-то я не понимаю, что происходит. Как я могу решить эту проблему?
Примечание: Ни одна из переменных-членов в пределах Image
- указатели.
Как вы определяете, что 'frame' неинициализирован? – 0x499602D2
@ 0x499602D2 Я сказал: «Похоже, что он полностью неинициализирован». Это вызвано вызовом 'Image :: ~ Image()' после возвращения функции 'getFrame()'. –
Произошла копия, так как вы определяете, что 'frame' был неинициализирован? – 0x499602D2