在下面的代码中,指针转换和多继承如何一起发挥作用?
class Foo {
public:
virtual void someFunc();
};
class Bar;
void someWork(Bar *bar) {
((Foo*) bar)->someFunc();
}
class Bar: public Zed, public Foo {
...
virtual void someFunc() { ... do something else ... }
}
Bar bar;
int main() {
someWork(&bar);
}
我的理解有点不稳定。
一方面, someWork 对 Bar 一无所知,所以这应该行不通;但另一方面,我已经提前声明了 Bar。
谢谢!