下面是我的代码
template<class t>
class stack{
private: t val;
stack *next;
public: stack(t);
//void push(stack &st);
//void traverse();
};
class pstack{
public:
static pstack *top;
friend void push(stack &,pstack *); //This line is not working
};stack是模板类,pstack是非模板类。在"pstack“类中,"push”是一个带参数的朋友函数,它是模板类"stack“的一个对象。
请帮我纠正这个推送功能。
发布于 2013-12-12 14:51:37
您还必须使push函数成为模板:
class pstack{
public:
static pstack *top;
template<typename T>
friend void push(stack<T> &,pstack *);
};发布于 2013-12-12 14:53:05
也将你的朋友声明为模板:
class pstack{
public:
static pstack *top;
template <class T> friend void push(stack<T> &,pstack *);
};发布于 2013-12-12 14:54:02
类模板在使用前需要实例化。因此,在函数声明中,需要向stack添加一个模板类型参数。
friend void push(stack<Type> &, pstack *);
https://stackoverflow.com/questions/20536815
复制相似问题