【发布时间】:2012-12-12 05:25:40
【问题描述】:
假设有这个接口:
class A{
public:
virtual foo()=0;
};
还有一个实现这个接口的类B:
class B:public A{
public:
virtual foo(){} //Foo implemented by B
}
最后,一个类 C 具有类 A 和 B 作为基类:
Class C : public A, public B {
};
我的问题是,有一种方法可以告诉编译器 foo 的实现是来自类 B 的实现,而无需显式调用 B::foo()?
【问题讨论】:
-
你为什么要换一种方式呢?您唯一能摆脱的就是代码中的更多混乱。
-
我不想对从接口派生的所有纯虚函数进行包装。相反,我想使用具体类的实现。有一种方法可以在没有这些包装器的情况下做到这一点,或者我必须对每个函数进行包装器才能从具体类调用实现?
-
目前,
B没有实现该接口。你打算class B : public A吗? -
是的,我打算这样做。我编辑了问题=)谢谢
-
您接受的答案是不可移植的代码,它只能在 g++ 中工作,并且只是因为编译器错误。您可能需要重新考虑这一点。
标签: c++ inheritance multiple-inheritance pure-virtual