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到对象。代码>为什么取消引用指针?