(回答了旧问题,我需要将两个cpp文件一起编译。
发布了有关“默认构造函数”的无限定价的新问题。)

我有三个文件。

node.h用构造函数,析构函数声明定义节点类,但我想将实际定义放入node.cpp

class node{
private:
  int i;
  node *next;
public:
  node();
  node(int);
  ~node();
  void setNode(int);
};


node.cpp包含以下格式的构造函数/析构函数的定义。它也“ #include” node.h“”

node::node()
{
  node::setNode(0);
  cout<<"default constructor"<<endl;
  node *next = new node;
}
node::node(int value)
{
  node::setNode(value);
  cout<<"value constructor"<<endl;
  node *next = new node;
}
node::~node(){
  cout<<"default destructor"<<endl;
  delete next;
}
node::setNode(int value){
  i = value;
}


在nodelist.cpp中,这是我目前的主要功能。
它包括“ node.h”。
但是编译似乎找不到构造函数和析构函数

g++ nodelist.cpp
/tmp/cc6PoQNR.o: In function `main':
nodelist.cpp:(.text+0x11): undefined reference to `node::node()'
nodelist.cpp:(.text+0x22): undefined reference to `node::~node()'
collect2: error: ld returned 1 exit status


谁能解释这是什么问题?

如果可能的话,也许我会详细说明我所缺乏的一些知识。

谢谢你们。我需要一起编译node.cpp和nodelist.cpp。

下一个问题是:

在我的nodelist.cpp中,我刚刚输入

int main(){
node x;
return 0;
}


但它正在打印无限数量的“默认构造函数”。

最佳答案

node * next =新节点;默认构造函数内的这一行将调用要设置为next的节点的另一个默认构造函数,这将调用另一个默认构造函数,这将...

在nullptr旁边设置-您不想一次分配多个节点

关于c++ - node.h/node.cpp/nodelist.cpp之间的关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45913062/

10-11 22:41
查看更多