我的代码是:
Node.h
#ifndef NODE_H#define NODE_H#include<memory>template<typename type>class Node{ type data_; std::unique_ptr<Node> next_;public: Node(type data); Node(const Node& other); Node& operator=(Node other); frIEnd voID swap(Node& lhs,Node& rhs);};#include "Node.tpp"#endif
和Node.tpp
template<typename type>Node<type>::Node(type data):data_(data),next_(nullptr){}template<typename type>Node<type>::Node(const Node& other){ data_ = other.data_; next_ = nullptr; if(other.next_ != nullptr) { next_.reset(new Node(other.next_->data_)); }}template<typename type>voID swap(Node<type>& lhs,Node<type>& rhs){ using std::swap; swap(lhs.data_,rhs.data_); swap(lhs.next_,rhs.next_);}template<typename type>Node<type>& Node<type>::operator=(Node other){ swap(*this,other); return *this;}
当我从Source.cpp测试它
#include "Node.h"int main(){ Node<int> n(3); Node<int> n2(n); Node<int> n3(5); n3 = n2;}
我收到以下链接错误:
LNK2019: unresolved external symbol "voID __cdecl swap(class Node<int> &,class Node<int> &)解决方法 友元声明不“继承”模板参数,但需要自己的:
template<typename type>class Node{ // ...public: // ... template<typename U> // <<<<<<<<<<< frIEnd voID swap(Node<U>& lhs,Node<U>& rhs); // ^^^ ^^^ // ...};总结
以上是内存溢出为你收集整理的c – 模板类的友元函数中的链接错误全部内容,希望文章能够帮你解决c – 模板类的友元函数中的链接错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)