0

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

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

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

我知道使用 new 会返回一个指针,并且 .push_back 不能接受,但是,我不知道如何解决这个问题。

4

2 回答 2

0

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

于 2012-07-09T02:11:29.227 回答
0

一个非常快速的解决方法是更改​​向量的定义。而不是vector<Point>,将其更改为vector<Point *>。

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

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

于 2012-07-09T02:17:28.387 回答