push_back指向向量指针的指针

时间:2018-09-10 01:50:39

标签: c++ pointers vector

我有两个班级:ItemBox。在Box.h中,我有:

class Box {
  vector<const Item *> BoxItems;

   public:
   void AddItem(const Item *i);
}

Box.cpp中:

void Box::AddItem(const Item *i) {
  BoxItems.push_back(*i);
}

仅供参考,但在main.cpp中:

box.AddItem(&items[0]);

问题:编译时,我得到error: no matching member function for call to 'push_back',并从我在push_back中创建的向量中引用了Box.h我缺少什么?

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

void Box::AddItem(const Item *i) {
  this -> BoxItems.push_back(*i);
  Box::BoxItems.push_back(*i);
  BoxItems->push_back(*i);
}

但仍然存在相同的错误。

1 个答案:

答案 0 :(得分:1)

void Box::AddItem(const Item *i) {
  BoxItems.push_back(*i);
}

您应该使用指向push_back的指针的Item来调用Item。将*i更改为i

但是,我强烈建议不要使用指针向量,因为这会使正确获得对象所有权非常困难。相反,请考虑使用对象向量,unique_ptr对对象的向量或shared_ptr对对象的向量。