c ++如何从函数中正确返回对象

时间:2015-10-15 21:49:48

标签: c++ object set

我正在编写一个程序来处理与集合的不同操作,并且我给出的一些函数应该返回对象。 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;
}

2 个答案:

答案 0 :(得分:1)

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

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;
}

答案 1 :(得分:1)

彻底抛弃set3并直接在对象中构建交叉点:

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