我想有一個shared_ptr作爲一個類的成員,但shared_ptr管理的類型每次都是不同的,只有在運行時才知道。有什麼方法可以聲明這樣的成員,並在以後進行初始化?通用shared_ptr作爲一個類的成員
0
A
回答
3
是的。
使用運行時多態性,這意味着定義一個公共基類,如Base
,並將通用接口聲明爲虛函數,然後從中派生出來並在派生類中實現虛函數。如果這樣做,那麼你可以使用這樣的:
std::share_ptr<Base> ptr;
//now ptr can store an instance of any derived class from Base
或者你可以使用boost::any
,如果它是不可能確定一個共同的基類。如果你不能使用Boost,那麼你可以自己定義any
類。在本網站和谷歌搜索類型擦除。
以下是類型擦除兩頁的文章,你可以找到boost::any
在second page實現(雖然不完整):
1
如果類型與此無關,您可以使用類似Boost.Any
的東西。否則,做什麼@Nawaz says。
相關問題
- 1. shared_ptr作爲類成員損壞堆棧?
- 2. 用std :: shared_ptr分配類成員
- 3. 引用或shared_ptr作爲關聯的成員
- 4. 創建一個線程作爲一個類的數據成員
- 5. C++ - 通過成員函數更改一個類的成員值
- 6. 作爲另一個類的數據成員的類
- 7. 通用成員函數指針作爲另一個類中的模板參數
- 8. App Engine的 - 使用一個類成員作爲參數
- 9. 爲一個shared_ptr
- 10. 作爲另一個類的成員繼承vs類
- 11. 創建類實例作爲另一個類的成員
- 12. 使用另一個類成員的類成員函數指針
- 13. 如何在不是shared_ptr的成員中使用shared_ptr?
- 14. StringBuilder作爲類成員?
- 15. C++ char *作爲類成員
- 16. 向量作爲類成員
- 17. Win32 WndProc作爲類成員
- 18. 在C++中擁有另一個類作爲類成員
- 19. 作爲類成員的類成員函數指針
- 20. 通過另一個類的成員函數調用一個類的成員函數?
- 21. 指定一個類成員函數作爲另一個類的朋友?
- 22. 分配到一個std :: shared_ptr的成員變量
- 23. 是否安全返回的成員變量是一個shared_ptr
- 24. 使用另一個類成員初始化類成員C++
- 25. shared_ptr抽象基類(成員變量)是一個未聲明的標識符
- 26. 使用成員類型的模板類作爲類成員變量
- 27. 能否一類的靜態成員爲同一類型作爲類是成員的C++
- 28. 使用g ++檢測shared_ptr類成員引用
- 29. 錯誤聲明向量作爲一個類的數據成員
- 30. Eigen的地圖<>作爲一個類成員
你的意思是'std :: shared_ptr '? –
2011-12-21 15:59:50
@KerrekSB:糟糕。是。謝謝。 – Nawaz 2011-12-21 16:00:24