C++ 将指针推回指针向量

C++ 将指针推回指针向量,c++,pointers,vector,C++,Pointers,Vector,我有两类:Item和Box。在Box.h中,我有: class Box { vector<const Item *> BoxItems; public: void AddItem(const Item *i); } 仅供参考,但在main.cpp中: void Box::AddItem(const Item *i) { BoxItems.push_back(*i); } box.AddItem(&items[0]); 问题:当我编译时,我得到了错误

我有两类:
Item
Box
。在
Box.h
中,我有:

class Box {
  vector<const Item *> BoxItems;

   public:
   void AddItem(const Item *i);
}
仅供参考,但在
main.cpp
中:

void Box::AddItem(const Item *i) {
  BoxItems.push_back(*i);
}
box.AddItem(&items[0]);
问题:当我编译时,我得到了
错误:没有匹配的成员函数来调用“push_back”
,引用了我在
框中创建的向量中的
push_back
。我错过了什么

到目前为止,我已经尝试:

void Box::AddItem(const Item *i) {
  this -> BoxItems.push_back(*i);
  Box::BoxItems.push_back(*i);
  BoxItems->push_back(*i);
}
但还是有同样的错误

void Box::AddItem(const Item *i) {
  BoxItems.push_back(*i);
}
您正在使用
项调用
push_back
,而该项应该指向
项。将
*i
更改为
i


但是,我强烈建议不要使用指针向量,因为这样很难获得正确的对象所有权。取而代之的是,将对象的向量、向量的代码> UnQuyPPTR < /代码> S的代码或对象>向量> SydDypPTR < /代码> S到对象。代码>为什么取消引用指针?