我有两个班级:Item
和Box
。在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);
}
但仍然存在相同的错误。
答案 0 :(得分:1)
void Box::AddItem(const Item *i) {
BoxItems.push_back(*i);
}
您应该使用指向push_back
的指针的Item
来调用Item
。将*i
更改为i
。
但是,我强烈建议不要使用指针向量,因为这会使正确获得对象所有权非常困难。相反,请考虑使用对象向量,unique_ptr
对对象的向量或shared_ptr
对对象的向量。