我正在尝试为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引用/指针的编译器不知道其背后是哪种派生对象,因此也不需要-那就是接口和虚函数的全部要点。