Переместить значение из локального стека в кучу? (C++)

Как я могу взять результат вызова метода как объект-значение и поместить его на кучу?

Например:

Метод Qt QImage::scaledToWidth возвращает копию объекта QImage.

Сейчас я делаю так:

QImage *new_img_on_heap = new QImage(old_imgage_on_heap->scaledToWidth(2000));

Это единственный способ? Кажется, что мне придется заниматься созданием 3-го совершенно нового объекта, когда у меня уже есть отличный объект в стеке.

Причина, по которой я хочу поместить его на кучу, в том, что реальный QImage большой, и я хочу, чтобы он пережил время жизни текущего метода. Я собирался поместить указатель на него в поле моего класса.

Я знаю, что QImage имеет что-то вроде неявного разделения данных, но я не совсем понимаю, как это работает под капотом. Кроме того, я хотел бы знать общее решение на случай, если мне когда-нибудь понадобится использовать объекты, не так хорошо спроектированные, как в Qt.

25
задан feedc0de 2 May 2018 в 12:34
поделиться