我正在尝试为我的 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 在范围内。是否有可能让它在编译时抛出错误?我本来希望使用强类型枚举,但它们无法派生。