我想寫一個管理包含指針,其中鍵是一個字符串的STL地圖的對象的副本構造函數。然而,當我試圖在地圖中插入新的值時,指針設置爲NULL:C + + STL映射與自定義比較存儲空指針
// ...
for(std::map<std::string, data_base*, order>::const_iterator it = other.elements.begin();
it != other.elements.end(); ++it){
data_base *t = it->second->clone();
std::cout << "CLONE: " << std::hex << t << std::endl;
elements[it->first] = t;
std::cout << "INSERTED: " << std::hex << elements[it->first] << std::endl;
}
// ...
other
是被複制和elements
地圖的對象。 clone()
方法返回一個指向新對象的指針(通過new
)。
運行上面的代碼,我得到的是這樣的:
CLONE: 0xcfbbc0
INSERTED: 0
我不是一個非常有經驗的程序員,這個問題可能是簡單修復,但我沒有找到任何解決方案,它周圍搜索。
非常感謝您的時間。
'訂單'函數對象確實是不正確的,註釋它使地圖行爲正確。謝謝。 – newbie 2011-05-13 23:11:03
這一個不容易,我很驚訝,我發現它。 :) – Klaim 2011-05-13 23:11:57