0

関数のオーバーライドで問題が発生していますが、なぜ機能しないのかわかりません。私はオンラインで探し続けていますが、何も見つかりませんでした。念のため、現在 C++11 標準を使用していることを付け加えておく必要があります。これが私のコードです:

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 関数に移動します。

誰かが明らかに間違っているのを見ることができますか?

4

2 に答える 2