繁体   English   中英

c ++将对象传递给函数

[英]c++ passing objects to functions

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

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

}

这是我正在创建的函数,它需要创建集合的交集。 我将通过遍历并将这两个集合放在一起,然后删除两个原始集合中不存在的元素来解决这个问题,从而使我成为两者的交集。 我在逻辑上知道我该怎么做,但是我对传递到函数中的内容以及当仅传入一组时如何使用两个集合感到困惑(我被告知我无法更改函数的结构)功能,因此必须采用这种方式)。 任何帮助是极大的赞赏。

第一组是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
}

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

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

您的声明:

有人告诉我我不能更改函数的结构,所以需要这样

对我来说没有意义。

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

你不能”修改this是所得到的物体上,因为该函数是const成员函数。

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

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

在成员函数内部,可以使用this指针取消引用您曾经调用过的对象。 在这里这里阅读更多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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