У меня возникли проблемы с переопределением функции, и я не знаю, почему она не работает. Я продолжаю смотреть в Интернете, но ничего не нашел. Вероятно, я должен добавить, что я использую стандарт C++ 11 прямо сейчас на всякий случай. Вот мой код:C++ не может переопределить метод родительского класса
class SupervisedLearner {
public:
...
virtual double measureAccuracy(Matrix& features, Matrix& labels, Matrix* pOutStats = NULL);
}
class NeuralNet: public SupervisedLearner {
public:
...
double measureAccuracy(Matrix& features, Matrix& labels, Matrix* pOutStats = NULL) override;
}
Метод measureAccuracy затем вызывается через указатель на общий класс SupervisedLearner:
SupervisedLearner* learner = getLearner(model, r, parser.getLearnerExtra());
...
double accuracy = learner->measureAccuracy(trainFeatures, trainLabels, &stats);
Обратите внимание, что и базовый класс и класс ребенка есть реализации метода , Программа по какой-то причине всегда переходит к функции SupervisedLearner :: measureAccuracy.
Может ли кто-нибудь увидеть что-то явно не так?
Просто предложение: используйте 'override', если вы переопределяете виртуальные функции в производных классах. – rightfold
Что делает getLearner() экземпляр? – helb
Я также должен добавить, что я попытался явно наложить «ученик» на NeuralNet *, но это не сработало. –