【发布时间】:2013-12-08 02:08:30
【问题描述】:
取下面的代码
void save(){
Classname object(aString, aInt);
this->getVector().push_back(&object);
}
我正在尝试将对象的副本保存到此类的向量中,但我知道这是行不通的,因为一旦我离开 save(),对象就会被删除,所以我的问题是怎么做我解决这个问题?我会很感激一些代码示例,因为我正在从 java 迁移并且可能不理解其中的一些指针魔法。
编辑:英文 edit2:复制粘贴永远不起作用!
【问题讨论】:
-
使用智能指针。它们维护一个引用计数,并在最后一个引用被释放时自动释放内存。
-
另外,您可以将向量设为
vector<Classname>而不是vector<Classname*>。 -
@Joe Z 但这与多态性不冲突?
-
您可能想要发布 getVector() 的返回类型。如果它是向量的副本,您可能有两个错误。 &l 也不在范围内,可能希望将其修复为 &object
-
@MikeNeto:是的,如果您需要它是多态的,那么您确实需要使用指针。您可以使用智能指针向量,如上面 meagar 建议的那样。