具有返回类型的构造函数,或当前class-nam的非法重新定义

时间:2013-08-03 10:00:40

标签: c++ constructor linked-list

我将创建一个Linked_List对象类,它将是一个用于创建链表对象的“模板”。现在,我写了一个简单的代码,但有一个无法绕过的错误。我的代码是

#include <iostream>
using namespace std;
class L_List {
    private:
        struct node {
            int data;
            node* next;
        };
        node* top;
    public:
        void L_List():top(NULL) {}
};
int main() {
    L_List list;
    return 0;
}

在Visual Studio 2008中,我在构造函数声明字符串上遇到错误。 错误是错误C2380 - 在'L_List'之前的类型(具有返回类型的构造函数,或当前类名的非法重新定义?)。那么,我的代码出了什么问题?

3 个答案:

答案 0 :(得分:2)

在C ++中,构造函数不能返回任何内容。正确的定义是L_List():top(NULL)

答案 1 :(得分:2)

错误

  

返回类型为

的构造函数

表示必须从构造函数中删除返回类型void

#include <iostream>
using namespace std;
class L_List
{
    private:
        struct node
        {
            int data;
            node* next;
        };
        node* top;
    public:
        L_List():top(NULL)
        {

        }
};
int main()
{
    L_List list;
    return 0;
}

答案 2 :(得分:0)

构造函数不是函数。因此它无法返回任何内容,其目的是构造对象,即根据构造函数的参数设置数据字段。