[問題] 關於List存放多種類別的變數

看板C_and_CPP (C/C++)作者 (ttt)時間13年前 (2012/09/27 11:22), 編輯推噓2(209)
留言11則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 各位前輩好 小弟目前剛接觸C++不久 近日遇到了一個問題 想請教各位前輩 小弟有一個list存放了多種類別的變數 EX: //AClass,BClass繼承了BaseClass list<BaseClass> listV; listV包含了AClass,BClass的類別的變數 想請問除了去進行dynamic_cast AClass 去判斷是否為NULL(若為NULL,則表示為BClass的物件) 是否還有其他更好的方法 又或者在C++內是否有類似C#的List可以存放不同的類別的功能 不太確定小弟問題描述的是否夠清楚 還請各位前輩指教 感謝! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.167.204.188

09/27 11:28, , 1F
為何需要確認是哪個子類別? 通常都可以利用virtual功能
09/27 11:28, 1F

09/27 11:28, , 2F
避掉RTTI
09/27 11:28, 2F

09/27 11:28, , 3F
可以再描述一下你要做的事情是什麼嗎
09/27 11:28, 3F

09/27 12:06, , 4F
1.用virtual 2.容器內要放pointer,要小心memory leak
09/27 12:06, 4F

09/27 12:06, , 5F
3.最好還是用 boost::ptr_list
09/27 12:06, 5F

09/27 16:06, , 6F
想請問"容器內要放pointer,要小心memory leak"的原因?
09/27 16:06, 6F

09/27 18:36, , 7F
1. 繼承自同一類別卻要對特定類別作操作的理由?
09/27 18:36, 7F

09/27 18:36, , 8F
2. 提供不同類操作的物件卻要放在同個Collect的理由?
09/27 18:36, 8F

09/28 02:02, , 9F
virtual要指標才能用,leak意思就是忘了delete
09/28 02:02, 9F

09/28 12:36, , 10F
感謝版上的前輩,小弟之前腦袋打結了,用virtual就可以
09/28 12:36, 10F

09/28 12:36, , 11F
完成小弟要做的事,感謝囉!!
09/28 12:36, 11F
文章代碼(AID): #1GOyPds6 (C_and_CPP)
文章代碼(AID): #1GOyPds6 (C_and_CPP)