我想写一个管理包含指针,其中键是一个字符串的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