c++ - 是否有嵌套枚举类的接口(interface)机制?

标签 c++ oop class inheritance

在 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/

相关文章:

c++ - 在 "test mode"中打印信息,但不在 "normal execution"中打印信息

c++ - SCons 链接到子目录库

c++ - 如何反转 `std::integer_sequence<int, 4, -5, 7, -3>` 中整数的顺序?

c++ - 在 Electron 中使用自定义 Node 包

java - 将包装类拆箱到 var-arg

php: __destruct 问题(OOP 新手)

c++ - 如何为可为char或string的模板类实现方法?

c++ - 尝试运行队列程序时出现段错误(核心已转储)- C++

javascript - OOP JavaScript 回调

powershell - Write-Error 在类方法内部使用时不会产生有用的信息 |电源外壳