【问题标题】:Doubly linked node constructor in c++C ++中的双重链接节点构造函数
【发布时间】:2014-02-03 13:46:47
【问题描述】:

我正在尝试为 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' 来创建节点:

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

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

如何通过使用构造函数和变量使该程序编译而没有错误消息,我做错了什么?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 忘记这一点我感到非常尴尬。非常感谢,这解决了问题。
    【解决方案2】:

    您必须在您的 cpp 模块中包含带有节点定义的标头。我也认为 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;
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-20
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多