【发布时间】:2011-12-03 20:54:59
【问题描述】:
在代码中有一些特殊的类,也有一些普通的类。我想将它们区分开来,因为特殊课程需要给予不同的待遇。所有这些特殊类都是基类(不是任何其他类的子类)
为了实现这一点,我在源代码中标记了特殊的classes,方法是使用空的struct 向它们插入继承:
struct _special {}; // empty class
class A : public _special { // A becomes special
...
};
class B { // 'B' remains normal
...
};
class D : public A { // 'D' becomes special due to 'A'
...
};
只要需要,我可以使用is_base_of<Base,Derived> 找到单独的特殊类和普通类。另一种方法是在特殊类中使用typedef:
class A {
public: typedef something _special;
};
问题是如果A的孩子继承自多个类,那么typedefs就会有歧义。
问题:添加这样的接口,比如使用空class _special 继承,它会以任何方式伤害当前代码(例如对象结构、编译错误等)吗? ) ?
【问题讨论】:
标签: c++ inheritance object-layout