Russian Qt Forum
Ноябрь 25, 2024, 00:39 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QPointArray и DeepCopy в QT3  (Прочитано 4326 раз)
Martiro
Гость
« : Март 24, 2008, 16:22 »

Объясните пожалуйста, как правильно скопировать один QPointArray в другой. Так, чтобы не осталось ссылки на копируемый?..
QT 3.3.3
Записан
Sergeich
Гость
« Ответ #1 : Март 24, 2008, 16:28 »

Мля! В ассистанте черным по белому написано:
Цитировать
Note that because this class is a QMemArray, copying an array and modifying the copy modifies the original as well, i.e. a shallow copy. If you need a deep copy use copy() or detach(), for example:
Код:
        void drawGiraffe( const QPointArray & r, QPainter * p )
        {
            QPointArray tmp = r;
            tmp.detach();
            // some code that modifies tmp
            p->drawPoints( tmp );
        }
If you forget the tmp.detach(), the const array will be modified.
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #2 : Март 24, 2008, 16:30 »

Цитировать
QPointArray QPointArray::copy () const

Creates a deep copy of the array.

Оно?
Записан

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
Martiro
Гость
« Ответ #3 : Март 24, 2008, 16:36 »

И как это работает?
Если я напишу:
Код:
QPointArray A;
//  заполняю его какими-то значениями.
QPointArray B;
A.detach();
B=A;

Ссылка в массиве В на массив А останется?

Или как написать?
Может так:
Код:
B=A.copy();
Записан
Sergeich
Гость
« Ответ #4 : Март 24, 2008, 16:59 »

Правильно так:
Код:
QPointArray A;
// fill A
QPointArray B;
B = A;
B.detach();
или так:
Код:
QPointArray A;
// fill A
QPointArray B;
B = A.copy();
Как все это работает читать здесь: http://doc.trolltech.com/qq/qq02-data-sharing-with-class.html
Перевод тут: http://qt.osdn.org.ua/data-sharing.html
« Последнее редактирование: Март 24, 2008, 18:23 от Sergeich » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 22.