嗯,我正在尝试在C ++中的第一个Stack上实现copy_and_swap惯用语,为此,我需要创建一个swap函数,并且该swap函数必须是一个朋友函数,我尝试通过这种方式来做到这一点:] >
template <class T> class Stack { private: int top; T* a; int MAX; public: Stack(int MAX); Stack(Stack<T>& s); bool push(T x); bool pop(); T peek(); bool isEmpty(); friend void swap(Stack<T>& f, Stack<T>& s); ~Stack(); }; template <class T> void Stack<T>::swap(Stack<T>& f, Stack<T>& s){ //I will put something where yet. }
但是,VSCode谈到了交换功能:类模型“ Stack”没有“ swap”成员(我翻译成英文,我的VSCode用葡萄牙语运行。
如何在不收到此错误的情况下做到这一点?
[Well,我正在尝试在C ++中的第一个Stack上实现copy_and_swap惯用语,为此,我需要创建一个swap函数,并且此swap函数必须是一个好友函数,因此我试图通过它来实现...
您的朋友函数不是模板,因此要在外部定义,您必须为每种类型定义非模板函数(这似乎不可行::]]
void swap(Stack<int>& lhs, Stack<int>& rhs){/*..*/}
void swap(Stack<char>& lhs, Stack<char>& rhs){/*..*/}
void swap(Stack<MyType>& lhs, Stack<MyType>& rhs){/*..*/}