属性的 C++ 继承替代方案

标签 c++ inheritance

在我的 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;

我不喜欢为每个类重复上述声明(以及更多...),因为如果我需要一个新的速度属性函数,我必须在所有类中添加它。 我知道一种解决方案是从定义该函数的基类派生所有类。但是,由于类之间没有任何关系,这是正确的解决方案吗?!我认为仅仅为了避免函数重复而看到所有从基类派生的类并不是那么“干净”。不是吗?还有其他解决方案吗?

最佳答案

我不认为基类不好。所有类都有共同的属性——速度,所有的物体都可以以一定的速度移动并共享这个属性。 可移动的物体。

或者,您可以使用 max() 和 min() 方法创建类 Speed,并将其包含在所有类(组合)中。

关于属性的 C++ 继承替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31161840/

相关文章:

javascript - TypeScript 中的多类继承

ios - Swift 中的多个泛型类继承

c# - 如何防止具有公共(public)派生类的抽象类被其他程序集继承?

Java:继承类构造函数正在调用父类(super class)

java - 如何使用构造函数扩展类

C++ 私有(private)嵌套抽象类

c++ - 重载运算符函数

c++ - 链接到特定的 stdc++ 库

c++ - C++在局部变量的内存上是否有上限?

c++ - 编译时 OpenGL GLI 错误