【发布时间】:2017-04-24 18:04:01
【问题描述】:
我正在使用一些像这样定义的第 3 方库类。
class A : public Interface1, public Interface2 {};
class B : public Interface1, public Interface2 {};
它们不只共享一个公共基类。是否可以声明一个既可以引用 A 类又可以引用 B 类的指针类型?
请注意,我使用的是第 3 方库,无法重新定义 A 和 B。如果可以,我会这样做:
class Base : public Interface1, public Interface2 {};
class A : public Base {};
class B : public Base {};
然后我可以简单地使用指向 Base 类的指针。
Base *pBase;
【问题讨论】:
-
通用基类是either
Interface1orInterface2。如果你不能重构代码,真的没有办法绕过它。您应该使用哪一种取决于具体情况和您当前的需求。 -
我不建议使用它,但
void*可以引用任何内容。也可以创建一个“指针”类,它可以根据它们的类型同时保存。