Russian Qt Forum

Qt => Общие вопросы => Тема начата: Igors от Июнь 21, 2014, 15:39



Название: Безобидное (?) присваивание
Отправлено: Igors от Июнь 21, 2014, 15:39
Мелочь, но все-таки, сегодня получил за такое
Код
C++ (Qt)
QImage img1, img2;
...
img1 = img2;
Оказывается есть ситуации где это может оказаться ошибкой  :)


Название: Re: Безобидное (?) присваивание
Отправлено: alex312 от Июнь 21, 2014, 17:54
Cкандалы, интриги, расседования ...
Хотелось бы конкретики и разоблачений  :)


Название: Re: Безобидное (?) присваивание
Отправлено: Igors от Июнь 21, 2014, 18:09
Cкандалы, интриги, расседования ...
Хотелось бы конкретики и разоблачений  :)
Це ж нецiкаво :) Когда ответ оглашен - реакция "ну конечно", "разумеется", "а как могло быть иначе"? и "важно понимать что...".

Ладно, на всякий случай сообщаю что оба имеджа корректны и даже имеют одинаковый формат и размеры.


Название: Re: Безобидное (?) присваивание
Отправлено: Bepec от Июнь 21, 2014, 18:18
Это не в общие вопросы. Это в раздел "Что, Где, Когда" надо.


Название: Re: Безобидное (?) присваивание
Отправлено: Old от Июнь 21, 2014, 18:32
Це ж нецiкаво :) Когда ответ оглашен - реакция "ну конечно", "разумеется", "а как могло быть иначе"? и "важно понимать что...".
Думаю будет как всегда: дело будет в коде, который вы "забыли" нам привести, что бы мы не догадались. :)
Или это весь код? :)


Название: Re: Безобидное (?) присваивание
Отправлено: kambala от Июнь 21, 2014, 18:44
Цитировать
Assigns a shallow copy of the given image to this image and returns a reference to this image.
в этом все дело?


Название: Re: Безобидное (?) присваивание
Отправлено: Igors от Июнь 21, 2014, 19:13
Это не в общие вопросы. Это в раздел "Что, Где, Когда" надо.
А нефиг умничать зная "правельный ответ"  :)

Цитировать
Assigns a shallow copy of the given image to this image and returns a reference to this image.
в этом все дело?
Да, но само по себе не криминал, в какой ситуации за это можно получить по интерфейсу?


Название: Re: Безобидное (?) присваивание
Отправлено: kambala от Июнь 21, 2014, 20:06
вероятно img1 живет дольше img2, и img2 хранит поверхностную копию данных, которые уничтожаются в его cleanup function


Название: Re: Безобидное (?) присваивание
Отправлено: Igors от Июнь 22, 2014, 11:21
Так что, рассказать и перейдем к фазе "ах как это очевидно" - или будут еще попытки?  :)


Название: Re: Безобидное (?) присваивание
Отправлено: Old от Июнь 22, 2014, 12:27
Так что, рассказать и перейдем к фазе "ах как это очевидно" - или будут еще попытки?  :)
Если для вас это важно - рассказывайте, думаю врядли кто-то догадается написать то же, что и вы, в этом месте. :)


Название: Re: Безобидное (?) присваивание
Отправлено: Igors от Июнь 23, 2014, 09:49
Достаточно одной таблетки
Код
C++ (Qt)
QPainter painter(&img1);
img1 = img2;
 
С последующим крахом painter'а


Название: Re: Безобидное (?) присваивание
Отправлено: Bepec от Июнь 23, 2014, 11:20
Как бы логично. И это проблема не QImage а QPainter.
Холст на лету поменять не так легко.