向量指针并通过引用传递对象。 C++
问题描述:
我有以下类:向量指针并通过引用传递对象。 C++
class Database
{
private:
vector<myObject*> m_vectorObj;
public:
void addObject(myObject &passObj)
}
我试图做到这一点:
void Database::addObject (myObject &passObj)
{
m_vectorObj.push_back(passObj);
}
不过是给我的错误“找不到匹配函数来调用”,我怎样才能使这个工作并传递对象并存储指针?
答
1:你只是缺少
首先,问问自己,如果你真的需要使用指针
如果你这样做,那么你有两个选择。
1:你只是缺少&
之前passObj
m_vectorObj.push_back(&passObj);
^
2:更改您的功能(从参考指针)
void Database:addObject (myObject *passObj)//pointer to myObject instead of reference
{
m_vectorObj.push_back(passObj);
}
我不会用指针可言,但我建议你到encapsulate'em为std::unique_ptr
答
范围解析运算符 '::' 不 ':'。将void DataBase:addObject更改为DataBase :: addObject。
+0
改变了它,对不起 – IzonFreak 2014-12-03 21:41:23
答
要传递到指针类型,它不等于任何原型叫你有一个参考。
如果你想添加的指针更改代码接受指针对象:
void Database::addObject (myObject * passObj)
{
m_vectorObj.push_back(passObj);
}
//somewhere:
Database db;
db.addObject(new myObject);
注意,引用通常彪为modyfiing传递的参数
'm_vectorObj.push_back(PA ssObj)',但是最好是改变对指针的引用,正如弗拉德所建议的那样。 – doc 2014-12-03 21:35:03