c ++如何从函数中正确地return一个对象

c++ How to properly return an object from a function

我正在编写一个程序来处理集合的不同操作,我得到的一些函数应该是 return 对象。 SoS 是在头文件中声明的对象,具有数据成员 m_vos(字符串向量)和布尔值。在我正在创建新对象和新集合的函数中。如何将布景与物件联系起来?

这是我的:

SoS SoS::makeIntersection(const SoS& B) const {
    SoS intersection;
    vector<string> set1;
    vector<string> set2;
    vector<string> set3;

    set1 = this->m_vos;
    set2 = B.m_vos;

    //int totalElements;
    //totalElements = (set1.size() + set2.size());

    sort(set1.begin(), set1.end());
    sort(set2.begin(), set2.end());
    set_intersection(set1.begin(),set1.end(),set2.begin(),set2.end(),back_inserter(set3));

    return intersection;
}

从一个函数return一个对象,只需将函数定义为return一个对象。您需要在函数内部定义(或传入)一个对象,根据需要对其进行修改,然后 return 它。与您的问题相关的示例如下所示。

Object myFunction() {
    // object to return
    Object myObject;
    // set of strings
    std::set<string> mySet;
    // convert to vector
    std::vector<string> myVector(mySet.begin(), mySet.end());
    // assign to object (the actual setting will be different)
    myObject.setVector(myVector);
    // return object
    return myObject;
}

完全放弃 set3 并将交集直接构建到对象中:

set_intersection(set1.begin(), 
                 set1.end(), 
                 set2.begin(), 
                 set2.end(), 
                 back_inserter(intersection.m_vos));