C++ 如何在普通类的friend函数中发送模板类参数
我的代码写在下面C++ 如何在普通类的friend函数中发送模板类参数,c++,templates,C++,Templates,我的代码写在下面 template<class t> class stack{ private: t val; stack *next; public: stack(t); //void push(stack &st); //void traverse(); }; class pstack{ public: static
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
};
模板
类堆栈{
私人:t val;
堆栈*下一步;
公众:stack(t);;
//空推(堆栈和st);
//无效遍历();
};
类pstack{
公众:
静态pstack*顶部;
friend void push(stack&,pstack*);//此行不起作用
};
“stack”是模板类,“pstack”是非模板类。在“pstack”类中,“push”是一个将参数作为模板类“stack”对象的友元函数
请帮助我更正此推送功能。您还必须将
推送功能设置为模板:
class pstack{
public:
static pstack *top;
template<typename T>
friend void push(stack<T> &,pstack *);
};
class pstack{
public:
static pstack *top;
template <class T> friend void push(stack<T> &,pstack *);
};
class-pstack{
公众:
静态pstack*顶部;
模板
朋友无效推送(堆栈和pstack*);
};
也将您的朋友声明为模板:
class pstack{
public:
static pstack *top;
template<typename T>
friend void push(stack<T> &,pstack *);
};
class pstack{
public:
static pstack *top;
template <class T> friend void push(stack<T> &,pstack *);
};
class-pstack{
公众:
静态pstack*顶部;
模板推送(堆栈和pstack*);
};
类模板在使用前需要实例化。因此,在函数声明中,需要将模板类型参数添加到stack
friend void push(堆栈和pstack*)代码>