如果我有兩類:「父親」,以及「MyClassa」,我想這樣做:
father* a;
MyClassa b;
a = &b;
((MyClassa *)a) - > b();
我可以做如上面示例中的鑄造(b()
是屬於MyClassa
類的功能並且在father
類中找不到)。
但是,當我這樣做:
father* a;
MyClassa b;
a = &b;
a = ((MyClassa *)a);
a->b();
它不工作,我並告訴我,他b()
功能不在該類存在(如鑄件沒有工作)。
這兩個代碼示例實際上有什麼區別,是什麼導致了這種差異?
問題B
當我使用 'dynamic_cast的' 投一個爸爸是這樣一個孩子:
Father * fp= new Father;
Child * cp = dynamic_cast<Child *> fp;
它返回我一個 '0' 值指針。 但是,當我做同樣的參考:
Father & fp= new Father;
Child & cp = dynamic_cast<Child &> fp;
它提出了一個錯誤「壞鑄造」。
爲什麼會有差異?
在這一行術語被強制轉換爲MyClassa*
但隨後回到father*
(在任務),所以你最終有一個father*
給我們一個更完整的例子。 「MyClassa」的類聲明是怎樣的? –
請出示[MCVE]。 –
這些問題無關,請將它們分開。 – Tali