[英]Vector pointers and passing objects by reference in C++
I have the following class: 我有以下课程:
class Database
{
private:
vector<myObject*> m_vectorObj;
public:
void addObject(myObject &passObj)
}
I'm trying to do this: 我正在尝试这样做:
void Database::addObject (myObject &passObj)
{
m_vectorObj.push_back(passObj);
}
But is giving me the error "No matching function to call", how can I make this work and pass the object and store the pointer ? 但是是给我错误“没有匹配的函数要调用”,我如何使它工作并传递对象并存储指针?
you are passing a reference to a pointer type, which does not equal any prototype call you have. 您正在传递对指针类型的引用,该引用类型不等于您拥有的任何原型调用。
If you want to add pointers change your code to accept pointer objects: 如果要添加指针,请更改代码以接受指针对象:
void Database::addObject (myObject * passObj)
{
m_vectorObj.push_back(passObj);
}
//somewhere:
Database db;
db.addObject(new myObject);
note that references are usually ment for modyfiing the passed arguments 请注意,引用通常是用来修改传递的参数的
Scope resolution operator is '::' not ':'. 范围解析运算符是'::'而不是':'。 Change void DataBase:addObject to DataBase::addObject.
将void DataBase:addObject更改为DataBase :: addObject。
First of all, ask yourself if you really need to use pointers 首先,问问自己是否真的需要使用指针
If you do, then you have 2 options. 如果这样做,那么您有2个选择。
&
before passObj
&
在passObj
之前 m_vectorObj.push_back(&passObj);
^
void Database:addObject (myObject *passObj)//pointer to myObject instead of reference
{
m_vectorObj.push_back(passObj);
}
I wouldn't use pointers at all, but i suggest you to encapsulate'em into std::unique_ptr
我根本不会使用指针,但是我建议您将它们封装到
std::unique_ptr
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.