【发布时间】:2018-02-09 22:03:00
【问题描述】:
我有一个看起来像这样的接口类
class Module {
public:
virtual ~Module() = default;
virtual void inc(CounterType, uint64_t) = 0;
virtual void dec(CounterType, uint64_t) = 0;
};
这里的 counterType 是一个枚举类(来自 cpp11)。因此,从我的接口类派生的模块应使用其自己的一组枚举类(同样是特定于模块的)
当然编译器不能使用除此处指定的 CounterType 以外的枚举类的不同模块。
我需要重新设计吗?或者在这种情况下正确的设计实践是什么?
【问题讨论】:
-
CounterType代表什么? -
您将如何覆盖具有不同签名的方法?这是没有意义的。而且语言不允许。
-
我建议考虑使用模板类,但虚拟模板成员函数是非法的......
-
CounterType 将是一个枚举,用于识别不同模块的计数器,例如 CounterMod1Type、CounterMod2Type ... 等。这些模块中的每一个都有一个计数器的变体。
-
不知道
CounterType的类型,你打算如何使用Module接口?
标签: c++ c++11 design-patterns