假設我有Derived * derivedPtr;
我想從derivedPtr的Base baseObject;C++從派生類指針獲取基類對象?
Base baseObject = * derivedPtr;會用適當的Base類成員變量創建baseObject?
謝謝
假設我有Derived * derivedPtr;
我想從derivedPtr的Base baseObject;C++從派生類指針獲取基類對象?
Base baseObject = * derivedPtr;會用適當的Base類成員變量創建baseObject?
謝謝
Derived* obj = new Derived;
base objOne = (*obj) ; // Object slicing. Coping only the Base class sub-object
// that was constructed by eariler statement.
是的。這實際上稱爲「切片」,因爲您只需從派生類中刪除所有內容即可。
您可以使用動態鑄造做到這一點。
例如
Base* baseObject = dynamic_cast<Base*>(derivedPtr);
你不需要爲這個動態轉換。你只需要它從一個基地派生出來。而且由於OP需要一個新的Base對象,所以根本不需要投射。 :) – Xeo 2011-03-22 04:43:28
啊好的,謝謝。我被教導在錯誤的方面犯錯,所以有時我會忘記什麼時候沒有必要。 – 2011-03-22 04:53:10