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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сделать глубокую копию QDomNode в конструкторе копирования?  (Прочитано 2103 раз)
xintrea
Супер активный житель
*****
Offline Offline

Сообщений: 754



Просмотр профиля WWW
« : Февраль 24, 2016, 22:10 »

Есть некий класс Record, в котором есть protected-свойство:

Код:
QDomElement setupDomElement;

В момент копирования надо создать глубокую копию этого свойства.Я пишу так:

Код:
Record::Record(const Record &obj)
{
  ...
  setupDomElement=obj.setupDomElement.cloneNode();
  ...
}

И при компиляции получаю ошибку:

Код:
../mytetra/src/models/recordTable/Record.cpp: In copy constructor 'Record::Record(const Record&)':
../mytetra/src/models/recordTable/Record.cpp:42:18: error: no match for 'operator=' (operand types are 'QDomElement' and 'QDomNode')
   setupDomElement=obj.setupDomElement.cloneNode();
                  ^
../mytetra/src/models/recordTable/Record.cpp:42:18: note: candidate is:
In file included from /media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtXml/QDomElement:1:0,
                 from ../mytetra/src/models/recordTable/Record.cpp:3:
/media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtXml/qdom.h:470:18: note: QDomElement& QDomElement::operator=(const QDomElement&)
     QDomElement& operator= (const QDomElement&);
                  ^
/media/wd_640_part_2/opt/Qt_5_4_2/5.4/gcc/include/QtXml/qdom.h:470:18: note:   no known conversion for argument 1 from 'QDomNode' to 'const QDomElement&'
Makefile:23058: recipe for target 'build/Record.o' failed
make: *** [build/Record.o] Error 1
22:03:31: Процесс «/usr/bin/make» завершился с кодом 2.

Насколько я понял, метод cloneNode() возвращающий QDomNode, не может примениться к obj.setupDomElement, так как obj имеет тип const QDomElement&.

Я попробовал сделать прототип конструктора копирования без const, но тогда не проходит компиляция в других местах, и я бы не хотел их трогать.

Вопрос. Как обойти сию проблему, и сделать глубокую копию QDomElement в конструкторе копирования?
Записан

Собираю информацию по крупицам
http://webhamster.ru
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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