在我的C ++库中,我有一组对象,它们之间没有任何关系(想象一下例如以下列表:汽车,兔子,引擎,CPU等......)。唯一的共同点是名为speed的成员变量。
所以我在很多课程中都有这样的东西:
public:
inline int speed() {return m_speed;}
inline void setSpeed(int speed) {m_speed=speed;}
inline static int maxSpeed() {return 100;}
inline static int minSpeed() {return 1;}
...
protected:
int m_speed;
我不喜欢的是为每个类重复上述声明(以及更多...),因为如果我需要一个新的speed属性函数,我必须在所有类中添加它。 我知道一个解决方案可能是从定义该函数的基类派生所有类。但是,由于这些类与另一类没有任何关系,它是否是正确的解决方案?!我认为不是这样"清洁"查看从基类派生的所有类只是为了避免函数重复。不是吗?还有其他解决办法吗?
答案 0 :(得分:1)
我认为基类不好。所有类都有共同的属性 - 速度,所有对象都可以以一定的速度移动并共享此属性。 可移动的物体。
或者,您可以使用max()和min()方法创建类Speed,并将其包含在所有类(合成)中。
答案 1 :(得分:0)
你的课程并不是无关的:他们都有速度。因此,使它们从表示具有速度(XXXX.dll is missing
?)概念的类继承是完全合理的。
答案 2 :(得分:0)
是的,这是继承的完美案例。
除了从根本上处理speed
属性这一事实外,这些课程不需要有任何其他关系。