-1
こんにちはテンプレートに問題があります。私はテンプレートを使用してポインタのスタックが欲しいが、私は "タイプに名前をつけない"というエラーが出る。私は2つのクラスを持っています.1つはノードのスタックを管理し、もう1つはノードクラスです。問題はノードクラスにあり、解決方法はわかりません。他のクラスで宣言されているテンプレートを使用してノードオブジェクトを作成する方法を説明する人がいますか?コードは以下の通りです。テンプレート<class T>「エラー:....タイプに名前を付けていません」
template<class T> class PointerStack
{
public:
PointerStack();
bool isEmpty();
bool push(T dataIn);
bool pop();
bool top(T &topItem);
void clear();
void print();
private:
int counter;
Node<T>* start;
};
template<class T>
class Node
{
public:
Node(T dataIn);
Node(T dataIn, Node vorigeIn);
T getData();
Node* getPrevious();
private:
T data;
Node* previous;
Node* next;
};
template<class T>
PointerStack<T>::PointerStack()
{
counter == 0;
}
template<class T>
bool PointerStack<T>::isEmpty()
{
if(counter == 0)
{
return true;
}
else
{
return false;
}
}
template<class T>
bool PointerStack<T>::push(T data)
{
if(isEmpty())
{
start = new Node<T>(data);
counter++;
return true;
}
else
{
Node<T> dummy = start;
start = new Node<T>(data, dummy);
counter++;
return true;
}
}
template<class T>
bool PointerStack<T>::pop()
{
if(isEmpty())
{
return false;
}
else
{
Node<T> dummy = start;
start = start->vorige;
counter--;
delete dummy;
return true;
}
}
template<class T>
bool PointerStack<T>::top(T &topItem)
{
if(isEmpty())
{
return false;
}
else
{
topItem = start.getData();
return true;
}
}
template<class T>
void PointerStack<T>::clear()
{
while(isEmpty())
{
pop();
}
}
template<class T>
void PointerStack<T>::print()
{
Node<T> dummy = start;
if(!isEmpty())
{
for(int i = 0; i < counter; i++)
{
std::cout<<dummy->getData();
dummy->v;
}
}
}
template<class T>
Node<T>::Node(T dataIn)
{
data = dataIn;
previous = NULL;
next = NULL;
}
template<class T>
Node<T>::Node(T dataIn, Node previousIn)
{
data = dataIn;
previous = previousIn;
next = NULL;
previousIn->volgende = this;
}
template<class T>
T Node<T>::getData()
{
return data;
}
template<class T>
Node<T>* Node<T>::getPrevious()
{
return previous;
}
と、これはエラーメッセージです: enter image description here
あなたは 'テンプレートクラスノードを宣言する必要があります;'ちょうどテンプレートクラスの定義 'PointerStack'前に。 'PointerStack'は' Node 'が型であることを知ります。 –
Franck