У меня проблема с вызовом унаследованного метода.Возможно, мне не хватает некоторых 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