このバグの解決方法をすべて見てきましたが、何かを見つけることができませんでした。ここで左に '。' LinkedList実装でクラス/構造体/共用体が必要です。実装
は、エラーが発生するコードです:
template<typename DataType>
class LinkedList {
Node<DataType> *headNode;
Node<DataType> *tailNode;
Node<DataType> currentNode;
/// Other functions declared
};
template<typename DataType>
void LinkedList<DataType>::addAtIndex(DataType data, int index)
{
if (index < 0 || index >= size) {
throw LinkedListBoundsException();
}
if (index == 0) {
addToBeginning(data);
} else if(index == size - 1){
addToEnd(data);
} else {
Node<DataType> *nodeBefore = headNode;
Node<DataType> *nodeAfter = tailNode;
Node<DataType> node = Node<DataType>(data);
for (int i = 0; i < index - 1; i++) {
nodeBefore = headNode.getNext();
}
nodeAfter = nodeBefore.getNext();
nodeBefore.setNext(node);
nodeAfter.setPrevious(node);
node.setPrevious(nodeBefore);
node.setNext(nodeAfter);
size++;
}
}
そして、私のNode.h
#pragma once
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
template<class DataType>
class Node
{
protected:
Node<DataType> *previous;
Node<DataType> *next;
public:
DataType data;
Node();
Node(DataType newData);
Node(Node<DataType> newPrevious, DataType newData);
Node(DataType newData, Node<DataType> newNext);
Node(Node<DataType> newPrevious, DataType newData, Node<DataType> newNext);
~Node();
void setNext(Node<DataType> newNext);
void setPrevious(Node<DataType> newPrevious);
Node<DataType> getNext();
DataType getCurrent();
Node<DataType> getPrevious();
};
template<class DataType>
Node<DataType>::Node()
{
previous = NULL;
data = DataType();
next = NULL;
}
template<class DataType>
Node<DataType>::Node(DataType newData)
{
previous = NULL;
data = newData;
next = NULL;
}
template<class DataType>
Node<DataType>::Node(Node<DataType> newPrevious, DataType newData)
{
previous = newPrevious;
data = newData;
next = NULL;
}
template<class DataType>
Node<DataType>::Node(DataType newData, Node<DataType> newNext)
{
previous = NULL;
data = newData;
next = newNext;
}
template<class DataType>
Node<DataType>::Node(Node<DataType> newPrevious, DataType newData, Node<DataType> newNext)
{
previous = newPrevious;
data = newData;
next = newNext;
}
template<class DataType>
Node<DataType>::~Node()
{
previous = NULL;
next = NULL;
}
template<class DataType>
void Node<DataType>::setNext(Node<DataType> newNext)
{
next = newNext;
}
template<class DataType>
void Node<DataType>::setPrevious(Node<DataType> newPrevious)
{
previous = newPrevious;
}
template<class DataType>
Node<DataType> Node<DataType>::getNext()
{
return next;
}
template<class DataType>
DataType Node<DataType>::getCurrent()
{
return data;
}
template<class DataType>
Node<DataType> Node<DataType>::getPrevious()
{
return previous;
}
にエラーがすべてのノード/ nodeAfter/nodeBeforeにスローされることは注目に値しますメソッド。また、私はすべての代わりに - >を使用しようとするとき。私はさらに多くの誤りを受けます。
ありがとうございました!
あなたが尋ねるものを除いて、他にも多くのエラーがあります。これは、オブジェクトへのポインタの代わりにオブジェクトを使用することがあるためです。 'Node :: next'メンバ変数の宣言と' Node :: setNext'関数でそれに割り当てようとしているものを見てみましょう。 –
ありがとう、私はちょうどそれらをデバッグ完了しました! – JordanWx