我有一個基類多態類(具有虛方法)以及派生自它的派生類。 我嘗試使用下面的代碼無法使用派生的多態創建基類的shared_pointer
boost::shared_ptr<base_class> ptr(new derived_class());
但是編譯器返回我下面的錯誤
cannot convert ‘fpga_northwest*’ to ‘fpga*’ in initialization
make: *** [../obj/ixecute_cmd_interface.o] Error 1
讀環顧四周,我很想使用構建OK下面,但我有一些疑惑。你認爲這是正確的嗎?
boost::shared_ptr<base_class> ptr_base;
boost::shared_ptr<derived_class> ptr_derived(new derived_class());
ptr_base = boost::dynamic_pointer_cast<base_class>(ptr_derived);
如果我使用boost::static_pointer_cast
我有編譯器錯誤;因爲我從一個派生到一個基礎鑄造不應該更正確一個static_cast
?
感謝您的幫助
嘗試'dynamic_cast(deriver_class對象)' –
nmikhailov
不明白,這似乎工作正常:http://www.ideone.com/N63Qf – Nim
嗯,[這個例子](http:// ideone。 com/3Lzys)工作正常。你的代碼有什麼不同? –