次のコードでは、ポインター変換と多重継承はどのように連携しますか?
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を持っています。
ありがとう!