将新创建的对象添加到矢量

时间:2012-07-09 02:01:24

标签: object pointers vector

我最近声明在程序中使用指针,当我尝试以下操作时,我会收到此错误。

stored_points.push_back(new Point(anchor_y,anchor_x,last_direction));   

错误C2664:'void std :: vector< _Ty> :: push_back(_Ty&&)':无法将参数1从'Point *'转换为'Point&&'与[               _Ty =点          ]          原因:无法从'Point *'转换为'Point'          没有构造函数可以采用源类型,或者构造函数重载解析是不明确的

据我所知,使用new会返回指针,而.push_back无法接受,但是,我不知道如何修复它。

2 个答案:

答案 0 :(得分:0)

你是如何定义你的载体的? 如果是vector<Point>,请尝试将其更改为vector<Point*>。这告诉向量存储指向对象的指针。

答案 1 :(得分:0)

非常快速的解决方法是改变矢量的定义。而不是vector<Point>,而是将其更改为vector<Point *&gt;。

但是你应该认真考虑在这种情况下使用智能指针。所以vector<shared_ptr<Point> >是你可能想要考虑的。

智能指针在Boost和TR1中可用。