[英]Getting a c++ syntax error for a template stack implementation
我收到此代码的语法错误,一个c2143错误,Visual Studio说该错误在类节点定义的第七行。 如果有人可以告诉我错误是什么,我就是不明白。
#include <iostream>
using namespace std;
template<class T>
class Node
{
friend LinkedStack<T>;
private:
T data;
Node<T> *link;
};
template<class T>
class LinkedStack {
public:
LinkedStack() {top = 0;}
~LinkedStack();
int IsEmpty() const {return top == 0;}
T Top() const;
LinkedStack<T>& Add(const T& x);
LinkedStack<T>& Delete(T& x);
private:
Node<T> *top;
};
template<class T>
LinkedStack<T>::~LinkedStack()
{// Stack destructor..
Node<T> *next;
while (top) {
next = top->link;
delete top;
top = next;
}
}
template<class T>
T LinkedStack<T>::Top() const
{// Return top element.
if (IsEmpty()) cout<<"Stack empty:";
else
return top->data;
}
template<class T>
LinkedStack<T>& LinkedStack<T>::Add(const T& x)
{// Add x to stack.
Node<T> *p = new Node<T>;
p->data = x;
p->link = top;
top = p;
return *this;
}
template<class T>
LinkedStack<T>& LinkedStack<T>::Delete(T& x)
{// Delete top element and put it in x.
if (IsEmpty())
{
cout<<"Stack empty";
return *this;
}
x = top->data;
Node<T> *p = top;
top = top->link;
delete p;
return *this;
}
void main(void)
{
int x;
LinkedStack<int> S;
S.Add(1).Add(2).Add(3).Add(4);
cout << "Stack should be 1234" << endl;
cout << "Stack top is " << S.Top() << endl;
S.Delete(x);
cout << "Deleted " << x << endl;
S.Delete(x);
cout << "Deleted " << x << endl;
S.Delete(x);
cout << "Deleted " << x << endl;
S.Delete(x);
cout << "Deleted " << x << endl;
}
你有:
friend LinkedStack<T>;
不应该是:
friend class LinkedStack<T>;
?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.