c ++中双重链接的节点构造函数

时间:2014-02-03 13:46:47

标签: c++ constructor doubly-linked-list

我正在尝试在c ++中为双向链表创建一个节点,但遇到构造函数的一些问题。我有以下简单的头文件:

class Node{
public:
    Node();
private:
    int data;
    Node* next;
    Node* previous;
};

我的.cpp文件如下所示:

#include <iostream>
#include <cstdlib>

using namespace std;

int data;
Node* next;
Node* previous;

Node::Node(){
    data = 0;
    next = NULL;
    previous = NULL;
}

编译时出现以下错误:“节点未命名类型。”

我还尝试使用'struct'来创建Node:

struct Node{
     int data;
     Node* next;
     Node* previous;
}

但是这会给我在cpp文件中的构造函数上的另一个错误: “隐含声明的定义....”

如何使用构造函数和变量使这个程序在没有错误消息的情况下编译,以及我做错了什么?

2 个答案:

答案 0 :(得分:3)

您尚未包含定义Node的标头。

答案 1 :(得分:1)

您必须在cpp模块中包含带有Node定义的标头。另外我认为这些语句在cpp模块中

int data;
Node* next;
Node* previous;
必须删除

您可以在类定义中定义构造函数。我将其定义为

class Node{
public:
    Node( int data, Node *next = 0, Node *previous = 0 ) 
        : data( data ), next( next ), previous( previous )
    {
    }
private:
    int data;
    Node* next;
    Node* previous;
};