У меня есть класс
class Node {
public:
int value;
Node * next;
Node();
Node(const Node& other);
Node& operator= (const Node& other);
};
Это не очень полезно, но у него есть переопределенный оператор присваивания.Все там есть public
, потому что я такой открытый и дружелюбный парень.
Теперь в других местах у меня есть массив этих узлов:
Node * nodes = new Node[15];
Когда я пытаюсь назначить узел длямой массив узлов:
nodes[0] = Node();
Я получаю огромный ужасный сбой.
Мой оператор присваивания выглядит так:
Node& Node::operator= (const Node& other) {
// watch out for self assignment
if (this == &other) return *this;
delete this->next;
this->next = new Node(*(other.next)); // call the copy constructor
this->value = other.value;
return *this;
}
У меня такое чувство, что я долженпроверять, является ли this
NULL
, прежде чем пытаться разыменовать его членов.Есть мысли о том, что может быть не так?