加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读