だから私はC ++でミルリンクリストの実行を実装しようとしています
template<class T>
class Node
{
private:
Node *next;
T item;
public:
Node(T item)
: item(item)
{
this->next = NULL;
}
Node<T> add(T item) {
this->next = new Node(item);
return *this->next;
}
bool hasNext()
{
return this->next == NULL;
}
Node<T> getNext()
{
return *this->next;
}
T value()
{
return this->item;
}
};
void main()
{
Node<int> node(3);
node.add(3).add(4);
cout << node.value();
cout << node.getNext().value();
cout << node.getNext().getNext().value();
cin.get();
}
しかし、私はそれを機能させることができません。特にこのセクション:
node.add(3).add(4);
cout << node.value();
cout << node.getNext().value();
cout << node.getNext().getNext().value();
add
関数と関数をの代わりにgetNext
返すように変更すると、正常に動作します。しかし、逆参照によってコードが破損するのはなぜでしょうか? 表記は よりも理にかなっていると思いますが、機能させることができません。私は何を間違っていますか?Node<T>*
Node<T>
.
->