0

最近、プログラムでポインタを使用することを述べましたが、次のことを試してみると、このエラーが発生します。

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*'から変換できませんto'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 に答える