小编A.I*_*.I.的帖子

将抽象 C++ 类传递给构造函数并调用成员方法

是否可以传递一个抽象类作为参数并使用其成员函数,如下所示?(摘要:创建的模型需要从基类派生的求解器,并且要求解的方程组可能会发生变化)。

#include <iostream>
#include <string>
#include <functional>

class AbstractSolver {
  public:
  virtual ~AbstractSolver(){}
  virtual double solve() = 0;
  virtual void setSystem(std::function<double(double,double)> system) = 0;
};

class ConcreteSolver : public AbstractSolver {
  protected:
    double stepSize;
    double initialValue;
    std::function<double(double, double)> system;
  public:
  ConcreteSolver(double stepSize,
                 double initialValue) :
     stepSize(stepSize),
     initialValue(initialValue) {}

  double solve() {
    // implementation here ...
  }

  void setSystem(std::function<double(double,double)> system) {
    this->system = system;
  }
};

class Model {
  protected:
    std::function<double(double,double,double)> system;
    AbstractSolver * solver;
  public:
    Model(AbstractSolver * solver,
          std::function<double(double, double, …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance parameter-passing

2
推荐指数
1
解决办法
852
查看次数

标签 统计

c++ ×1

inheritance ×1

parameter-passing ×1