我最近声明在程序中使用指针,当我尝试以下操作时,我会收到此错误。
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无法接受,但是,我不知道如何修复它。
答案 0 :(得分:0)
你是如何定义你的载体的?
如果是vector<Point>
,请尝试将其更改为vector<Point*>
。这告诉向量存储指向对象的指针。
答案 1 :(得分:0)
非常快速的解决方法是改变矢量的定义。而不是vector<Point>
,而是将其更改为vector<Point *
&gt;。
但是你应该认真考虑在这种情况下使用智能指针。所以vector<shared_ptr<Point> >
是你可能想要考虑的。
智能指针在Boost和TR1中可用。