好的,我在 C++ 中有一个有点复杂的系统。简而言之,我需要向第三方抽象基类添加一个方法。第三方还提供了大量也需要新功能的派生类。
我正在使用一个提供标准 Shape 接口以及一些常见形状的库。
class Shape
{
public:
Shape(position);
virtual ~Shape();
virtual position GetPosition() const;
virtual void SetPosition(position);
virtual double GetPerimeter() const = 0;
private: ...
};
class Square : public Shape
{
public:
Square(position, side_length);
...
};
class Circle, Rectangle, Hexagon, etc
现在,这是我的问题。我希望 Shape 类也包含一个 GetArea() 函数。所以看起来我应该做一个:
class ImprovedShape : public virtual Shape
{
virtual double GetArea() const = 0;
};
class ImprovedSquare : public Square, public ImprovedShape
{
...
}
然后我去做一个继承自ImprovedShape 和Square 的ImprovedSquare。好吧,正如你所看到的,我现在已经创建了可怕的钻石继承问题。如果第三方库对其 Square、Circle 等使用虚拟继承,这将很容易解决。但是,让他们这样做并不是一个合理的选择。
那么,当您需要向库中定义的接口添加一点功能时,您会怎么做?有好的答案吗?
谢谢!