- 论坛徽章:
- 1
|
OptimizationProblem.h 代碼中是 三個 pure virtual function
// class 繼承關係
- <div><div>class LocalLeastSquaresProblem : public virtual AbstractOptimizationProblem<Evaluation>, LeastSquaresProblem</div><div>{</div><div>}</div></div><div>
- </div><div><div>template<typename PAIR></div><div>class AbstractOptimizationProblem : public OptimizationProblem<PAIR></div><div>{</div></div><div>}</div><div>
- </div><div>
- </div><div><div>template<typename PAIR></div><div>class OptimizationProblem</div><div>{</div><div>public:</div><div> virtual Incrementor* getEvaluationCounter() = 0;</div><div> virtual Incrementor* getIterationCounter() = 0;</div><div> virtual ConvergenceChecker<PAIR>* getConvergenceChecker() = 0;</div><div>};</div></div>
复制代码
AbstractOptimizationProblem.cpp 去 override 這三個 pure virtual function
- #include "AbstractOptimizationProblem.h"
- template<typename PAIR>
- AbstractOptimizationProblem<PAIR>::AbstractOptimizationProblem(int maxEvaluations, int maxIterations, ConvergenceChecker<PAIR>* checker) {
- }
- template<typename PAIR>
- Incrementor* AbstractOptimizationProblem<PAIR>::getEvaluationCounter() {}
- template<typename PAIR>
- Incrementor* AbstractOptimizationProblem<PAIR>::getIterationCounter() {}
- template<typename PAIR>
- ConvergenceChecker<PAIR>* AbstractOptimizationProblem<PAIR>::getConvergenceChecker() {}
复制代码
可是編譯出來還是無法成功 override 這三個 pure virtual function
src/LeastSquaresFactory.cpp: In static member function ‘static LeastSquaresProblem* LeastSquaresFactory::create(MultivariateJacobianFunction*, RealVector*, RealVector*, RealMatrix*, ConvergenceChecker<Evaluation>*, int, int, bool, ParameterValidator*)’:
src/LeastSquaresFactory.cpp:27:83: error: invalid new-expression of abstract class type ‘LeastSquaresFactory::LocalLeastSquaresProblem’
checker, maxEvaluations, maxIterations, lazyEvaluation, paramValidator);
^
In file included from src/LeastSquaresFactory.cpp:4:0:
src/LeastSquaresFactory.h:207:11: note: because the following virtual functions are pure within ‘LeastSquaresFactory::LocalLeastSquaresProblem’:
class LocalLeastSquaresProblem : public virtual
^
In file included from src/AbstractOptimizationProblem.h:30:0,
from src/LeastSquaresFactory.h:11,
from src/LeastSquaresFactory.cpp:4:
src/OptimizationProblem.h:17:26: note: Incrementor* OptimizationProblem<PAIR>::getEvaluationCounter() [with PAIR = Evaluation]
virtual Incrementor* getEvaluationCounter() = 0;
^
src/OptimizationProblem.h:25:26: note: Incrementor* OptimizationProblem<PAIR>::getIterationCounter() [with PAIR = Evaluation]
virtual Incrementor* getIterationCounter() = 0;
^
src/OptimizationProblem.h:32:39: note: ConvergenceChecker<PAIR>* OptimizationProblem<PAIR>::getConvergenceChecker() [with PAIR = Evaluation]
virtual ConvergenceChecker<PAIR>* getConvergenceChecker() = 0;
|
|