2

在 C++ 中,纯虚函数提供接口的功能。也就是说,任何子类都必须实现基类中的所有纯虚函数:

class myClass {
    virtual bool implementme() = 0; // MUST be implemented
};

class mySubClass : public myClass {
    bool implementme() {} // REQUIRED
};

enum嵌套 ( ) classes是否有类似的机制?也就是说,我正在寻找类似的东西

class myClass {
    virtual enum class myEnum = 0; // MUST be implemented
};

class mySubClass : public myClass {
    enum class myEnum {}; // REQUIRED
};
4

2 回答 2

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 {};
};
于 2013-03-01T14:09:15.987 回答
0

这没有多大意义。有人只能对基类(而不是派生类)有可见性,并myEnum从某个虚函数的返回中取回 a,其中myEnum是一个不完整的类型。没有任何类型的虚拟类型的机制,包括枚举。你真的想要一个虚拟表来查找你的类型吗?

于 2013-03-01T13:21:46.597 回答