在 C++ 中,纯虚函数提供接口(interface)的功能。也就是说,任何子类必须实现基类中的所有纯虚函数:
class myClass {
virtual bool implementme() = 0; // MUST be implemented
};
class mySubClass : public myClass {
bool implementme() {} // REQUIRED
};
嵌套(enum
)class
是否有类似的机制?也就是说,我正在寻找类似的东西
class myClass {
virtual enum class myEnum = 0; // MUST be implemented
};
class mySubClass : public myClass {
enum class myEnum {}; // REQUIRED
};
最佳答案
既然你说实现者不是你的代码库的一部分(因此不会产生编译错误),我必须假设你正在编写一个库,并且使用这个枚举的代码在库的消费者中。
我建议您使用 CRTP如下:
class myClass {
};
template<typename T> class myClassImpl : public myClass {
static_assert(std::is_enum<typename T::myEnum>::value, "Subclasses of myClassImpl must provide the myEnum enum class");
};
class mySubClass : public myClassImpl<mySubClass> {
enum class myEnum {};
};
关于c++ - 是否有嵌套枚举类的接口(interface)机制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15158698/