C ++将对象传递给函数

c++ passing objects to functions

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

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

}

这是我正在创建的函数,它需要创建集合的交集。我会通过遍历并将两个集合放在一起然后删除不属于两个原始集合的元素来解决这个问题,从而得到两者的交集。我从逻辑上知道我该怎么做,但我对我传递给函数的内容以及当只有一个似乎传入时我如何能够使用两组感到困惑(有人告诉我我不能改变结构功能,所以它需要这样)。非常感谢任何帮助。

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

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

您的陈述:

I was told I can not change the structure of the function so it needs to be this way

对我来说没有意义。

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

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

您不能将 B 修改为结果对象,因为它由 const& 传递。

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

但是,为了简洁起见,您可以省略 this->,除非局部变量和成员变量之间存在名称冲突。所以你可以简单地做 m_vos...B.m_vos....

你还需要考虑你的功能是什么return?也许你创建的交叉点?这将是第三个 SoS 变量,您可能 return 作为结果:

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

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

在成员函数中,您用来调用它的对象可以使用 this 指针取消引用。阅读更多 here and here.