c++程序中未定义的引用错误

Undefined reference error in C++ program

本文关键字:引用 错误 未定义 程序 c++      更新时间:2023-10-16

我正在使用RapidXML解析c++中的XML文件。我已经制作了treeNode.h和treeNode.cpp文件。我正在创建一个treeNode对象来帮助我进行解析。当我尝试这样做时,它会给我一个未定义的引用错误。给我错误的代码行(我认为)是以下行:

treeNode<xml_node<> > * tn = new treeNode<xml_node<> >(root_node);

如果你想知道我从哪里得到root_node,它在我的main.cpp中定义如下:

xml_document<> doc;
doc.parse<0>(&buffer[0]);               
xml_node<> * root_node = doc.first_node();

错误信息是这样的:

undefined reference to `treeNode<rapidxml::xml_node<char> >::treeNode(rapidxml::xml_node<char>*)'
collect2: ld returned 1 exit status

这是我在treeNode.h中的三个构造函数:

treeNode(T* element1);
treeNode(T* element1, T* parent1);
treeNode(T* element1, T* parent1, vector<treeNode<T>*> child1);

任何帮助修复这个错误将是非常感激的。谢谢你!

我怀疑你已经在"treeNode.cpp"中实现了treeNode方法。

在这种情况下,它们还没有被实例化。

所有你的treeNode实现需要在treeNode.h头中,所以编译器可以在使用它们时实例化函数。
否则,您将只有声明而没有定义——因为编译器不能生成任何定义——并且您将得到与根本没有任何实现一样的链接错误。