#include <iostream>
class EquationOfMotion
{
public:
// other attributes
virtual void findNextTimeStep() = 0;
};
class SystemModel
{
public:
EquationOfMotion* p_eom;
// other atributes
SystemModel(EquationOfMotion* new_p_eom)
{
p_eom = new_p_eom;
}
};
class VehicleEquationOfMotion: public EquationOfMotion
{
public:
VehicleEquationOfMotion(...){/* initialise attribute*/}
virtual void findNextTimeStep(){}
};
class Vehicle: public SystemModel
{
// ???? Implementation ?????
}
Vehicle
是SystemModel
的一种特殊形式,其中p_eom
指向VehicleEquationOfMotion
。我想初始化
VehicleEquationOfMotion
的一个实例,并在p_eom
中指向它Vehicle
。我希望仅在Vehicle
范围内定义它,同时不要使用堆。甚至可以在不使用堆的情况下将
VehicleEquationOfMotion
对象驻留在Vehicle
中吗? (如果没有,请建议设计哪里出了问题)。可能会有所帮助:我考虑过this问题中的实现,但遇到了麻烦(请参阅问题)。
最佳答案
如果我正确回答了您的问题,请按照以下步骤操作:
class FooChild : public FooParent
{
public:
FooChild (int pX):m_BarChild(pX), FooParent(&m_BarChild) // point p_barPar to instance of BarChild (i.e. m_BarChild)
{
}
private:
BarChild m_BarChild; // instance of BarChild resided in the stack(not the heap) and is local to FooChild
}