我想離開MFC,我怎麼能取代CPtrArray?CPtrArray沒有MFC(STL或升壓)
也許我可以的typedef它的東西都vector<void *>
什麼是更好的方式來保存完整的功能這個類的?
謝謝。
我想離開MFC,我怎麼能取代CPtrArray?CPtrArray沒有MFC(STL或升壓)
也許我可以的typedef它的東西都vector<void *>
什麼是更好的方式來保存完整的功能這個類的?
謝謝。
不需要自己寫,你可以用boost::ptr_array
代替。它使用底層std::vector<void*>
來存儲指針。
您不應該首先使用CPtrArray。從Visual C++支持模板開始之前的黑暗時代開始,這是一個危險的老課程,只能非常小心地使用它。它的問題是它存儲指針(任何指針!)爲void*
,這意味着當你將指針從數組中取出時,你有沒有任何類型的信息。如果你的代碼在很大程度上依賴於這個,你就有可能濫用對象和嚴重的內存泄漏(例如未能調用析構函數)。
boost::ptr_array
不是CPtrArray
的直接替代品,它是一個正確的模板類型敏感類:它最近的MFC相當於將CArray<T>
。它使用void*
來處理指針的事實(實質上)是一個實現細節,而不是直接使用vector<void*>
。
(如果你知道的所有CPtrArray
然後我的說教合唱團道歉的問題,但我認爲任何問題有關CPtrArray
需要一個警示說明附後。)