Есть некий класс 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 в конструкторе копирования?