【发布时间】:2012-10-21 12:10:37
【问题描述】:
我正在使用 OpenCV 开发一个系统。该系统有一个带有虚函数的类,它与 OpenCV 使用的虚函数同名(train)。当我编译时,我收到以下警告:
/opt/local/include/opencv2/ml/ml.hpp:957:18:警告: 'CvForestTree::train' 隐藏重载的虚函数 [-Woverloaded-虚拟]
大多数与隐藏重载虚函数有关的问题都涉及类和派生类,但在这种情况下,我(可能不正确)假设问题是 OpenCV 实现的类具有同名的函数。请注意,必须包含 OpenCV 头文件才能使我的函数的类定义起作用。
显然,我不想更改我创建的类中函数的名称,我怀疑我正在做一些愚蠢的事情来解决这个问题。
编辑:CvForestTree 是 OpenCV 的课程,不是我的课程。我不确定导致问题的代码行的确切区域,因为任何包含 OpenCV 标头的文件都会出现警告。也许这意味着它是一个 OpenCV 错误。
【问题讨论】:
-
CvForestTree是您自己的班级还是来自 OpenCV 的班级? -
另外,您能否发布一个重现问题的小代码sn-p。 (见SSCCE)
-
只有在子类隐藏了其基类的功能时才会产生此警告。不相关的类不能以这种方式交互。
-
我有同样的警告,我的班级都没有名为 train 的函数...我使用的是 OpenCV 2.4.8。您是如何修复此警告的@sklum?
-
@RafaelOliveira - 很抱歉,我已经完全将我的代码库从存在问题的代码中迁移出来了,我不完全记得我是如何解决它的。当然,您可以关闭这种特定类型的编译器警告。
标签: c++ class function virtual overloading