コンストラクタに渡された関数ポインタからメンバ関数を初期化する方法がわかりません。 私のクラスには、微分問題の関数で変化するメンバ関数RHSがあります。コンストラクタで関数を渡してください! 正しい方法は何ですか?関数ポインタからメンバ関数を初期化する
class RhsOdeProblem
{
public:
// constructor without alalitical solution
constexpr RhsOdeProblem (double (*rhs)(double, double),
double, double, double, double) noexcept ;
virtual ~RhsOdeProblem() noexcept = default ;
RhsOdeProblem(const RhsOdeProblem&) noexcept = default;
RhsOdeProblem(RhsOdeProblem&&) noexcept = default ;
double RHS(double, double);
double AnaSol();
double dxdt(double, double);
void setRhs(double (*rhs)(double, double));
void setAnaliticalSolution(double (*realSol)(double,double));
double startTime ;
double endTime ;
double dt ;
double initValue ;
constexpr static double eps = 10e-8 ;
bool analiticalSolution ;
};
constexpr RhsOdeProblem::RhsOdeProblem (double (*rhs)(double, double),
double ti,
double tf,
double dt,
double y0) noexcept : startTime{ti}, endTime{tf},
dt{dt} , initValue{y0} ,
analiticalSolution{false}
{
setRhs(rhs);
}
どのようにsetRhsを定義できますか?それを行う最善の方法は何ですか? ありがとうございました
メンバ関数post-factを設定することはできません。あなたは 'RHS'を通常の関数ポインタにすることができます。 – StoryTeller