【发布时间】:2012-02-06 06:21:09
【问题描述】:
我有一个基类和派生自它的类。基类Controllable 充当输入循环的接口,其他类从它派生以在该循环中获得一个点来获取事件,例如按下某个键。
class Controllable{
public:
virtual void setActive(bool state) { m_active = state; }
virtual void input(Event & e) =0;
private:
bool m_active;
};
class Button : public Controllable{
public:
void setActive(bool state){ /*do extra work*/ m_active = state; }
void input(Event & e) override;
};
由于Button 类处理来自事件队列的事件,将其设置为非活动状态(将其从输入循环中移除)可能会导致它错过重要事件,例如未按下键,因此需要额外的代码来如果它以后再次变为活动状态,则将其置于友好的非活动状态。
我的问题,确保setActive 始终具有将m_active 切换到正确状态的预期效果的最佳方法是什么,同时不需要派生类除非他们需要附加额外需要的代码,否则定义它?
【问题讨论】:
-
你在
}函数之后有;,注意它们。 -
Mr.TAMER - 已修复!我很痒;手指
标签: c++ inheritance c++11