Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 对超类方法的未定义引用_C++_Inheritance - Fatal编程技术网

C++ 对超类方法的未定义引用

C++ 对超类方法的未定义引用,c++,inheritance,C++,Inheritance,我试图创建一个函数,通过从entry超类调用另一个函数,从二进制搜索树中输出数据,但我不断得到错误: 对“Entry::inOrderPrint(Entry*)”的未定义引用 collect2:错误:ld返回了1个退出状态 我尝试过重命名超类inOrderPrint函数,但没有成功 超类的头文件如下所示: 类条目 { 公众: //... 在OrderPrint中无效(条目*startNode); 私人: //... }; 条目类的.cpp文件: #包括“Entry.h” //... 无效inO

我试图创建一个函数,通过从entry超类调用另一个函数,从二进制搜索树中输出数据,但我不断得到错误:

对“Entry::inOrderPrint(Entry*)”的未定义引用 collect2:错误:ld返回了1个退出状态

我尝试过重命名超类inOrderPrint函数,但没有成功

超类的头文件如下所示:

类条目
{
公众:
//...
在OrderPrint中无效(条目*startNode);
私人:
//...
};
条目类的.cpp文件:

#包括“Entry.h”
//...
无效inOrderPrint(条目*startNode)
{
//打印算法
}
子类BST.h文件:

#包括“Entry.h”
BST类:公开进入
{
公众:
//...
void inOrderPrint();
私人:
条目*根;
};
以及子类.cpp文件:

#包括“BST.h”
//...
void BST::inOrderPrint()
{
节点::inOrderPrint(根);
}

真的不明白为什么编译器认为对Entry::inOrderPrint(Entry*)的引用未定义。非常感谢您的帮助。

结果是我忘了将Entry::scope添加到我的Entry.cpp文件。

Groovy。但是仍然缺少一些东西,因为程序链接。我可以假设
void inOrderPrint(Entry*startNode)
实际上是在其他地方的cpp文件中实现的吗?@user4581301是的,Entry超类和BST类是在各自的.cpp文件中实现的,我只是将代码压缩到一个.h文件中,这样在单个页面上查看时就有意义了。您必须后退一步,但首先绝对确定此cpp文件正在编译和链接。@user4581301当我整理提交内容时,我实际上意识到我只是忘记在Entry.cpp文件中设置inorderprint函数的作用域,这就是为什么编译器认为该函数不存在的原因!所以谢谢你让我修复我的帖子,哈哈,我喜欢这些简单的问题。它们更容易解决。这就是说,一只小马:这是一种非常有效的解决方法。打赌如果你确保你的最小示例再现了错误,你就不必问这个问题了。