我对继承变量有疑问。我的部分源代码:
class Piston{ //abstract class
... //virtual functions
};
class RectangularPiston: public Piston
{
... //non virtual implementation of the Piston functions
bool setGridSize(...) //this function doesn't exists in the Piston class
{
...
}
}
class Transducer{ //abstract class
... //virtual functions
protected:
Piston *m_piston;
};
class RectilinearTransducer: public Transducer
{
... //non virtual implementation of the Piston functions
bool setGridSizeOfPiston(...)
{
return m_piston->setGridSize(...); //doesn't work
}
}
RectilinearTransducer 拥有一个 m_piston,它始终是一个 RectlinearPiston!但是 m_piston 是由 Transducer 类继承的,我不能使用 setGridSize() 函数。
错误消息:错误 C2039:“setGridSize”:不是“活塞”的元素
活塞类中不存在 setGridSize 函数...
我怎么解决这个问题?我应该像使用虚拟函数那样覆盖 m_piston 变量吗?m_piston 变量以 Piston* m_piston 的形式存在,因为我由 Transducer 类继承了它。
感谢帮助