c ++将对象传递给函数

时间:2015-10-15 17:43:33

标签: c++ reference set

我正在开发一个项目,处理许多不同的操作集。我有一个关于通过引用传递的具体问题。在头文件中,我创建了一个名为SoS的对象,它代表字符串集,其私有数据成员是一个名为m_vos的字符串向量和一个名为m_cofinite的布尔值。这是我与我正在创建的交叉函数混淆的一个例子。

SoS::makeIntersection(const SoS& B) const {

}

这是我正在创建的功能,它需要创建集合的交集。我会通过循环并将两个集合放在一起然后删除不是两个原始集合的一部分的元素来接近这个,因此给出了两者的交集。我在逻辑上知道我怎么能做到这一点,但我很困惑,因为我传递给函数,以及当我只能传入一个时,我能够使用两套(我被告知我无法改变结构功能所以它需要这样)。非常感谢任何帮助。

3 个答案:

答案 0 :(得分:4)

第一组是this,您可以像this->m_vos...一样访问其成员。第二组是您传入的那一组,您可以访问其成员,如B.m_vos...

但是,为简洁起见,除非局部变量和成员变量之间存在名称冲突,否则可以省略this->。因此,您只需m_vos...B.m_vos...

您还需要考虑您的功能将返回什么?也许你创造的交叉点?这将是您可能返回的第三个SoS变量:

// return type SoS
SoS SoS::makeIntersection(const SoS& B) const {

    SoS intersection; // this is the new SoS that will be the intersection

    // fill intersection.m_vos using B.m_vos and this->m_vos

    return intersection; // return the intersection version
}

答案 1 :(得分:1)

您可以通过this访问调用该函数的对象。第二个对象是函数的参数。

第一个字符串向量是this->m_vos 第二个字符串向量是B.m_vos

您的陈述:

  

我被告知我无法改变功能的结构,所以它需要这样

对我没有意义。

该函数似乎没有返回值。您是否忘记将其包含在已发布的代码中?如何将结果对象(交集)返回到调用函数?

您无法将this修改为结果对象,因为该函数是const成员函数。

你不能将B修改为结果对象,因为它是const&传递的。

答案 2 :(得分:0)

为类调用成员函数的方法是通过其对象(如果不是静态的)。要获得两个集合(sos对象)的交集,您将使用其中一个SoS对象调用该函数,并将另一个作为参数引用传递。

在成员函数中,您用来调用它的对象可以使用this指针进行解除。阅读更多herehere