在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