在C ++中,纯虚函数提供了接口的功能。也就是说,任何子类必须实现基类中的所有纯虚函数:
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
};
答案 0 :(得分:1)
由于您说实现者不是您的代码库的一部分(因此不会产生编译错误),我必须假设您正在编写库,并且使用此枚举的代码位于库的使用者中。
我建议您使用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 {};
};
答案 1 :(得分:0)
这不会有多大意义。有人只能看到基类(而不是派生类),并从某些虚函数的返回中返回myEnum
,其中myEnum
是不完整的类型。任何类型的虚拟类型都没有机制,包括枚举。你真的想要一个虚拟的桌子来查找你的类型吗?