我在调用继承方法时遇到问题。可能我错过了一些 virtual
、const
或 &
但我找不到位置
我有一个基类Classifier
,其中包含一个“实”函数和一个虚函数,“实”函数调用虚函数。子类 MyClassifier
定义了虚拟继承方法。现在,当我在 MyClassifier
对象上调用“真实”类时,出现编译器错误。
class Classifier {
public:
bool classify(const Image& ii)
{
return classify(ii, ii.getRect());
}
virtual bool classify(const Image& ii, const rect_t& rect) const = 0;
};
class MyClassifier : public Classifier {
public:
bool classify(const Image& ii, const rect_t& rect) const;
};
bool
MyClassifier::classify(const Image& ii, const rect_t& rect) const
{
// do stuff...
}
调用代码为:
// main...
MyClassifier c;
Image some_image;
c.classify(some_image);
错误:
error: no matching function for call to ‘MyClassifier::classify(const Image&) const’
note: candidate is:
note: virtual bool MyClassifier::classify(const Image&, const rect_t&) const
note: candidate expects 2 arguments, 1 provided
最佳答案
子类中的重载方法对基类隐藏了方法。您可以使用 using
声明修复它:
class MyClassifier : public Classifier {
public:
using Classifier::classify;
bool classify(const Image& ii, const rect_t& rect) const;
};
关于c++ - 调用继承的方法 - 编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8572311/