(回答了旧问题,我需要将两个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/