如果定义了某些宏,则继承更多的类
问题描述:
我有一个宏ROOF_EXISTS
,它可能在编译期间定义,也可能不定义。如果定义了某些宏,则继承更多的类
宏目前用来表示一个类应该以下面的方式来继承与否:
#ifdef ROOF_EXISTS
class building : public door, public roof, public window
#else
class building : public door, public window
#endif
我也想添加2个宏,如果它们被定义它增加了额外的课程。但是,如果我这样做,我很快就会遇到大量的复制和粘贴,并且代码的指数级增加会变得很混乱。
有没有一种干净的方式来使用宏来有条件地添加(或删除)需要被继承的类?
答
你可以这样做:
class Test: public A
#ifdef TEST
, public B
#else
, public C
#endif
{
};
+1
谢谢!这正是我所期待的。 – user43825
+2
@ user43825 _“那正是我在找的东西。”_我很怀疑,但是... –
这看起来像一个可怕的设计。为什么不使用可变模板呢?实际上的目的是什么? –
我不认为你会这样做。继承描述了一种“是 - 一种”关系。为什么建筑物是一扇窗户?为什么建筑是一扇门? –
我认为你的设计有问题。继承封装了“isa”关系。建筑物不是门 –