在followint代码中,指针转换&多重继承如何一起玩?以下foward声明的多继承指针转换代码如何工作?
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);
}
我的理解有点不稳定。
一方面,有些工作对酒吧一无所知,所以这不应该工作;但另一方面,我已经向前宣布了Bar。
谢谢!
对另一个问题的这个答案有一个很好的列表,你可以做什么,不能做一个不完整的类型:http://stackoverflow.com/questions/553682/when-to-use-forward-declaration/553869#553869 – 2010-01-31 06:13:23