简体   繁体   English

在C ++中通过引用实现矢量指针和传递对象

[英]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个选择。

1: You are just missing & before passObj 1:您只是想念&passObj之前

m_vectorObj.push_back(&passObj);
                      ^

2: Change your function (from reference to pointer) 2:更改功能(从引用到指针)

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM