2012-07-09 210 views
0

我最近在一个程序中声明了使用指针,当我尝试以下时,我得到了这个错误。向一个向量添加一个新创建的对象

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

错误C2664: '无效的std ::矢量< _Ty> ::的push_back(_Ty & &)':无法从 '点*' 转换参数1至 '点& &' 与[ _Ty =点 ] 原因:无法从“点*”到“点” 转换没有构造函数可采取源类型,或构造函数重载解析模棱两可

据我了解,使用新给出了一个指针回传,以及.push_back可以”但是,接受这一点,我不知道如何去解决这个问题。

回答

0

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

+0

这样做的时候,会出现很多其他的错误,还有什么我需要做的来解释这个? – Behemyth 2012-07-09 02:44:44

+0

你还有其他什么错误? – wquist 2012-07-09 03:03:26

+0

对于同一行,我收到相同的错误,并用此行“if(* stored_points.at(index).x == index_x_p && * stored_points.at(index).y == index_y_p){”i'm “错误C2228:'.x'的左边必须有class/struct/union 1> type是'Point *' 1>您是否打算使用' - >'?我的下一个响应将在十一个小时内完成,对于延迟提前抱歉。 – Behemyth 2012-07-09 03:08:05

0

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

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

智能指针可用于Boost和TR1。

相关问题