我正在尝试为gui实现抽象一个通用的接口,但是我很难弄清楚如何做到这一点。这是我想要实现的简化版本。

class IBorderable
{
    virtual unsigned int getBorderWidth(BorderIndex index) const = 0;
    virtual void setBorderWidth(BorderIndex index, unsigned int width) = 0;
};

class Square : public IBorderable
{
    // Implement while limiting BorderIndex to only 4
    // Calling with invalid BorderIndex is handled at compile time
};

class Cube : public IBorderable
{
    // Implement while limiting BorderIndex to only 6
};


理想情况下,我想通过多态来做到这一点,而无需进行任何条件检查以确保BorderIndex在范围之内。是否有可能在编译时引发错误?我本来希望使用强类型的枚举,但不能派生它们。

最佳答案

恐怕如果没有使通用接口的全部内容无效的技巧,在编译时就无法检查。
在运行时这样做当然很容易。

仅具有IBorderable引用/指针的编译器不知道其背后是哪种派生对象,因此也不需要-那就是接口和虚函数的全部要点。

08-07 12:25