我有一系列 C++ 类,我希望它们在功能上都相同,但在其他方面与继承无关。实际上,这些类只会在名称上有所不同。(这些类将被抛出,我不希望某些基类的 catch 子句吞噬抛出的派生对象。会有派生类,但我希望创建始终隔离的离散类集,只要关注块。)
当然,这样做的缺点是复制源代码。每当需要更改某些内容时,我不想更新相同代码的 N 个副本。
我已经通过#define 解决了代码重复问题。但我认为,如果我可以利用模板,它将有助于调试能力。模板中唯一参数化的就是类名本身。
我尝试了以下方法,但在 gcc 中不起作用(启用了 c++0x 支持):
template<typename ClassName>
class ClassName
{
public:
ClassName(int foo, float bar) { ... }
~ClassName() { ... }
bool SomePublicMethod() { ... }
private:
...
}
然后我会用类似的东西声明实际的类:
typedef ClassName<UnrelatedClass1> UnrelatedClass1;
typedef ClassName<UnrelatedClass2> UnrelatedClass2;
我已经知道上述方法不起作用;我将它作为我想要完成的概念示例提供,并且想知道除了我目前使用的#define 宏方法之外是否有其他方法可以使它工作(它的调试能力降低了。 )