【发布时间】:2011-05-14 07:11:38
【问题描述】:
我正在尝试为管理包含指针的 STL 映射的对象编写复制构造函数,其中键是字符串。但是,当我尝试在地图中插入新值时,指针被设置为 NULL:
// ...
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
我不是一个很有经验的程序员,这个问题可能很容易解决,但我没有找到任何解决方案。
非常感谢您的宝贵时间。
【问题讨论】:
标签: c++