私はC++のOO側であまり経験はありません。私はいくつかのコードを移植して知識を磨いていますが、問題があります。派生クラスで仮想関数を実装するときのアクセス基底クラスのプライベートメンバー
class ExtendedKalmanFilter
{
private:
double dt;
public:
ExtendedKalmanFilter(int states);
virtual VectorXd f(VectorXd x, VectorXd u);
virtual MatrixXd F(VectorXd x);
virtual VectorXd h(VectorXd x);
virtual MatrixXd H(VectorXd x);
~ExtendedKalmanFilter();
};
別ExtendedKalmanFilter
を継承し、仮想関数実装するクラス私が持っている:
class KineticEnergyEKF : public ExtendedKalmanFilter {
public:
KineticEnergyEKF(int nstates) : ExtendedKalmanFilter(nstates)
{}
VectorXd f(VectorXd x, VectorXd u)
{
this->dt = 1.0; //ERROR: Apparently I have no access to dt
}
MatrixXd F(VectorXd x);
VectorXd h(VectorXd x);
MatrixXd H(VectorXd x);
};
Visual Studioは、私がdt
にアクセスできないことを示しているが、私はすることができます私はこのように定義されたクラスを持っていますExtendedKalmanFilter
に定義されている他の関数にアクセスします。 dt
にアクセスするにはどうすればよいですか?
'dt'を' protected'にするか、 'public' /' protected'アクセスメソッドをBaseクラスに追加してください。 – songyuanyao
'dt'を' protected'としてアクセス可能にします。 –