У меня возникли проблемы с созданием нового объекта путем «копирования» уже существующего объекта того же типа.Templated конструктор конструктора const const
template<class dataType>
inline Node<dataType>::Node(const Node<dataType> & node)
{
if (this != nullptr)
{
this->mData = node.getData();
this->mLeft = node.getLeft();
this->mRight = node.getRight();
}
}
Должен ли я использовать вышеуказанный? Или я должен просто сделать:
template<class dataType>
inline Node<dataType>::Node(const Node<dataType> & node)
{
this = node;
}
Последний дает следующую ошибку:
1>h:\projects\binary search trees\data\classes\node.h(51): error C2440: '=': cannot convert from 'const Node<float> *' to 'Node<float> *const '
1> h:\projects\binary search trees\data\classes\node.h(51): note: Conversion loses qualifiers
Бывший жалуется что-то подобное:
1>h:\projects\binary search trees\data\classes\node.h(51): error C2662: 'float Node<float>::getData(void)': cannot convert 'this' pointer from 'const Node<float>' to 'Node<float> &'
1> h:\projects\binary search trees\data\classes\node.h(51): note: Conversion loses qualifiers
Что я делаю не так?
No, Node содержит только T mData и 2 указателя к узлу объектов. Это моя попытка реализации двоичных деревьев. Сгенерированный конструктор компилятора работает. Однако цель этого - обучение. Поэтому я был бы признателен, если бы кто-нибудь мог указать мне в правильном направлении. –
ijustpostedsomethingdumb
Что вы хотите, чтобы ваш конструктор копий делал? Просто скопируйте указатели или выполните глубокую копию всего дерева с этого узла? – TartanLlama
Я хочу, чтобы он копировал указатели и данные, поскольку указатели уже имеют сохраненные левые и правые поддеревья. – ijustpostedsomethingdumb