我正在尝试在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文件中的构造函数上的另一个错误: “隐含声明的定义....”
如何使用构造函数和变量使这个程序在没有错误消息的情况下编译,以及我做错了什么?
答案 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;
};