检查类型是否使用多重继承
Check if type uses multiple inheritance or not
我有这些类:
class A{};
class B{};
class C : public A{};
class D : public A, public B{};
我想做一个这样的模板函数:
template<typename T>
void f(T* arg);
并为此进行 2 个专业:
- 当 T 不使用继承或使用单一继承时
- 当 T 使用多重继承时
假设f_specialization1()
是第一种情况和f_specialization2()
(我知道嘿必须有相同的名称,这只是一个方便的约定)。我想要这种行为:
A a;
B b;
C c;
D d;
f(&a);//here f_specialization1 is called
f(&b);//here f_specialization1 is called
f(&c);//here f_specialization1 is called
f(&d);//here f_specialization2 is called
是否有可能实现此行为?
虽然我不知道您的意图并同意预期行为应包含在问题中以获得更好的设计解决方案,但实现您请求的简单机制是创建一个空白接口,所有多重继承类也必须继承该接口,并专门用于该 MultipleInheritance"接口"。
class MultipleInheritance
{
protected:
MultipleInheritance() {}
};
class A{};
class B{};
class C : public A{};
class D : public A, public B, public MultipleInheritance {};
template<>
void f(MultipleInheritance* arg);
template<typename T>
void f(T* arg);
但是,我个人认为,根据设计约束,这将非常乞求在这一点上进行重新设计,并且它确实不允许你做太多有用的事情,因为使用其他无用的类型来选择这个函数专用化。
相关文章:
- 关于C++中具有多重继承"this"指针的说明
- 在运行时检查继承是否只有一种类型和 void*
- C++中模板化异常类的多重继承
- 虚拟继承中是否存在多重继承?
- 如何在 c++ 多重继承中调用父非虚函数?
- 多重继承相同的方法名,没有歧义
- 使用enable_if解决多重继承歧义
- 多重继承导致虚假的模糊虚拟函数过载
- 多重继承和访问不明确的元素
- C++ 多重继承:使用基类 A 的实现实现基类 B 的抽象方法
- QScopedPointer 是否隐藏了多重继承
- c++:多态性+多重继承顺序.继承顺序是否重要
- 这个多重继承的例子在C++中是否可以接受
- 添加插件 SDK - 是否多重继承
- 在 OMNeT++ 中使用多重继承时是否存在任何已知问题
- 是否有可能用Java接口取代C++的多重继承
- 如果QObject是从direct派生的,那么使用“虚拟”多重继承是否安全?
- 多重虚拟继承是否涉及虚拟函数的后期绑定式继承
- 是否需要多重继承
- 检查类型是否使用多重继承