gpt4 book ai didi

c++ - 包含的函数隐藏了重载的虚函数

转载 作者:搜寻专家 更新时间:2023-10-31 00:41:27 25 4
gpt4 key购买 nike

我正在使用 OpenCV 开发一个系统。该系统有一个带有虚函数的类,它与 OpenCV 使用的虚函数同名(train)。编译时,我收到以下警告:

/opt/local/include/opencv2/ml/ml.hpp:957:18: warning: 'CvForestTree::train' hides overloaded virtual functions [-Woverloaded-virtual]

大多数与隐藏重载虚函数相关的问题都涉及类和派生类,但在这种情况下,我(可能不正确)假设问题是 OpenCV 实现的类具有同名函数。请注意,我的函数类定义必须包含 OpenCV header 。

显然,我不想更改我创建的类中函数的名称,我怀疑我做了一些愚蠢的事情来解决这个问题。

编辑:CvForestTree 是 OpenCV 的类,不是我的。我不确定导致问题的代码行的确切区域,因为包含 OpenCV header 的任何文件都会出现警告。也许这意味着它是一个 OpenCV 错误。

最佳答案

问题不在于您的代码,而在于 OpenCV 的代码:CvForestTree 类派生自 CvTree 并且这两个类都有 [virtual] train() 成员函数。因为 CvForestTree 没有覆盖所有三个重载(我不知道它是否覆盖了任何一个但是 CvForestTree 中有两个 train() 重载> 和 CvTree 中的三个),至少隐藏了一个 CvTree::train() 函数。

问题的解决方法是声明如下

using CvTree::train;

CvForestTree 的定义中。当然,这不是你的课。这是警告的问题之一:通常会针对您无法控制的代码发出警告。

关于c++ - 包含的函数隐藏了重载的虚函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13168045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com