我對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'訪問方法。 – songyuanyao
將'dt'設置爲'protected'。 –