定义大量的接口实现
Define large number of interface implementations
假设我有一个简单的接口,有两个方法:
class iface {
public:
virtual void foo() = 0;
virtual void bar() = 0;
};
现在我想定义该接口的大量实现,但类声明中唯一的区别是名称。因此,这意味着没有额外的方法、变量或其他protected
表达式。
例如:
class bar1 : public iface {
public:
void foo();
void bar();
};
class bar2 : public iface {
public:
void foo();
void bar();
};
Etc,直到barN,其中N可以是大约50-60个类。
显然,所有的实现都会有所不同,但仍然存在大量样板定义在标头中进行的问题。如果可能的话,我希望能够避免一次又一次地定义这些类。我在想,也许我可以使用宏或模板来自动生成,这样我就可以将列表bar3
中的下一个类键入到一个函数中,该函数将生成可以编译和链接的代码。然而,我正在阅读,我想不建议出于调试目的使用宏类定义。模板直观地感觉是一个可能的解决方案,但我仍然需要在某个地方定义模板。
如果你的问题真的这么简单(即没有过度简化),那么你可以做一些类似的事情:
template<int i,
typename std::enable_if_t< (i >= 0 && i < 50) > // this line is very much optional
>
class bar : public iface {
public:
void foo();
void bar();
};
我还建议用virtual和/或override标记foo()和bar()。如果你也想简化实现,那么你可以首先委托(从虚拟覆盖)一个模板函数,但一些额外的信息将有助于进一步阐述这一点。
相关文章:
- 如何从实现接口的模板化类实例访问结构
- 传递实现特定接口的类
- 如何在C++中实现接口
- C++ 使用接口和默认实现继承
- unique_ptr实现接口时对已删除函数的引用
- C++接口实现和子类化对象识别
- 接口实现和私有继承之间的交互
- Pimpl习惯用法、单独的接口/实现文件和多个虚拟继承.如何
- 定义大量的接口实现
- cpp文件中的纯虚拟接口实现
- 如何使用接口实现回调
- 继承接口实现
- 如何在C++中编写类java参数级接口实现
- 具有其他默认参数的接口实现
- Mixin和接口实现
- 如何在许多类中重用接口实现
- Emscripten Javascript接口实现
- 获取Firefox内置组件的接口实现
- c++中的头文件和Java中的抽象类/接口实现是相同的想法,这是正确的吗?
- C++中的接口+实现:代码不执行