c – 错误C2244无法将函数定义与现有声明匹配
发布时间:2020-12-16 03:39:54 所属栏目:百科 来源:网络整理
导读:我正在尝试在C,Visual Studio 2010中创建一个简单的模板列表 安培;我得到了:错误C2244无法将函数定义与现有声明匹配. 我试图将其更改为’typename’但它没有帮助. 它是一个基本的模板列表,具有非常基本的功能(Ctor,Dtor,Add,Delete). 请帮忙. #ifndef LIST_
我正在尝试在C,Visual Studio 2010中创建一个简单的模板列表
&安培;我得到了:错误C2244无法将函数定义与现有声明匹配. 我试图将其更改为’typename’但它没有帮助. 它是一个基本的模板列表,具有非常基本的功能(Ctor,Dtor,Add,Delete). 请帮忙. #ifndef LIST_H_ #define LIST_H_ template <typename T> class Node { T* m_data; Node* next; public: Node(T*,Node<T>*); ~Node(); void Delete (Node<T>* head); }; template <typename T> Node::Node(T* n,Node<T>* head) { this->m_data = n; this->next=head; } template <typename T> void Node::Delete(Node<T>* head) { while(head) { delete(head->m_data); //head->m_data->~data(); head=head->next; } } template <typename T> class List { Node<T*> head; public: List(); ~List(); void addInHead (T*); }; template <typename T> void List :: addInHead (T* dat) { head = new Node<T*> (dat,head); } template <typename T> List::List() { head = NULL; } template <typename T> List :: ~List() { head->Delete(head); } #endif 你有上面的代码. 解决方法
在模板体外部实现模板函数的语法不正确.它应该是这样的:
template <typename T> Node<T>::Node(T* n,Node<T>* head) // ^^^----- You need to add <T> here { this->m_data = n; this->next=head; } 您还缺少Node的析构函数的定义: template <typename T> Node<T>::~Node() { ... // Clean-up code } Link to ideone. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |