【发布时间】:2012-01-10 21:36:14
【问题描述】:
我有一个名为 Shape 的类和一个 ShapeStorage 类。 ShapeStorage 类有一个地图...
std::map<int, Shape*> shapes;
还有一个函数……
Shape * ReturnShapePointer(int key)
{
Shape* shape = shapes[key];
shapes.erase(key);
return shape;
}
我的目标是能够让我的主类实例化一个 ShapeStorage 对象,在形状映射中存储一些 Shape*。然后稍后我想从我的地图中删除它,但不删除值本身。我希望我的主类仍然能够访问该值。
我已经尝试过,我的指针仍然返回正确的值,但我担心,因为当我从地图中删除指针时,析构函数被调用为 Shape,所以那时它只是垃圾数据。
有没有办法解决这个问题?
【问题讨论】:
-
我不知道你想在这里做什么。你能澄清一下
ReturnShapePointer与你的文字有什么关系吗? -
这是一个在ShapeStorage中定义的函数,它返回一个指向形状的指针。我不希望其他类访问形状,因为我已将其设为私有。
-
“deconstructor”在C++中被称为“destructor”