C++ struct定义的类型,用在尖括号<>里报错
我先定义了一个PositonstructPosition{introw;intcol;};然后定义了一个链表堆栈template<classT>classNode{pri...
我先定义了一个Positon
struct Position
{
int row;
int col;
};
然后定义了一个链表堆栈
template<class T>
class Node
{
private:
T data;
Node<T> *link;
};
template<class T>
class LinkedStack
{
public:
LinkedStack(){top=0;}
~LinkedStack();
bool IsEmpty()const{return top==0;}
T Top()const;
LinkedStack<T>& Add(const T& x);
LinkedStack<T>& Delete(T& x);
private:
Node<T> *top;
};
class OutOfBounds{
public:
OutOfBounds(){
cout<<"Out Of Bounds!"<<endl;
}
};
template<class T>
LinkedStack<T>::~LinkedStack()
{
Node<T> *next;
while(top)
{
next = top->link;
delete top;
top = next;
}
}
template<class T>
T LinkedStack<T>::Top()const
{
if(IsEmpty())throw OutOfBounds();
return top->data;
}
template<class T>
LinkedStack<T>& LinkedStack<T>::Add(const T& x)
{
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)
{
if(IsEmpty())throw OutOfBounds();
x = top->data;
Node<T> *p = top;
top = top->link;
delete p ;
return *this;
}
问题来了,当我想这么声明一个path的时候
LinkedStack<Positon> *path;
总是报错
error C2065: 'Positon' : undeclared identifier
不是已经声明了Positon 了吗?
求大神指教!!!!!! 展开
struct Position
{
int row;
int col;
};
然后定义了一个链表堆栈
template<class T>
class Node
{
private:
T data;
Node<T> *link;
};
template<class T>
class LinkedStack
{
public:
LinkedStack(){top=0;}
~LinkedStack();
bool IsEmpty()const{return top==0;}
T Top()const;
LinkedStack<T>& Add(const T& x);
LinkedStack<T>& Delete(T& x);
private:
Node<T> *top;
};
class OutOfBounds{
public:
OutOfBounds(){
cout<<"Out Of Bounds!"<<endl;
}
};
template<class T>
LinkedStack<T>::~LinkedStack()
{
Node<T> *next;
while(top)
{
next = top->link;
delete top;
top = next;
}
}
template<class T>
T LinkedStack<T>::Top()const
{
if(IsEmpty())throw OutOfBounds();
return top->data;
}
template<class T>
LinkedStack<T>& LinkedStack<T>::Add(const T& x)
{
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)
{
if(IsEmpty())throw OutOfBounds();
x = top->data;
Node<T> *p = top;
top = top->link;
delete p ;
return *this;
}
问题来了,当我想这么声明一个path的时候
LinkedStack<Positon> *path;
总是报错
error C2065: 'Positon' : undeclared identifier
不是已经声明了Positon 了吗?
求大神指教!!!!!! 展开
2个回答
展开全部
你这样定义,使用的时候需要是LinkedStack<struct Positon> *path;
你想像你那样用,就
typedef struct Position
{
int row;
int col;
} Position;
你想像你那样用,就
typedef struct Position
{
int row;
int col;
} Position;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询