當我使用指向繼承類的指針調用基類函數時,爲什麼會出現編譯錯誤?繼承和指向指針的指針:爲什麼它不工作,我該如何解決它?
例子:
class cFoo {};
class cBar : public cFoo {};
void func1(cFoo *) {} // base class
void func2(cFoo **) {} // base class
void main(void)
{ cBar bar, *pbar; // inherited class
func1(&bar); // compiles OK
func2(&pbar); // fail
func2(dynamic_cast<cFoo**>(&pbar)); // 'class cFoo ** ' : invalid target type for dynamic_cast
}
如何解決此得到什麼?
這不是暫時的地址嗎?這是真的嗎? – 2010-07-27 12:11:16
@Anders那麼'dynamic_cast'然後呢? –
2010-07-27 13:24:29