从main()将类对象实例作为参数将参数传递到另一个类对象实例

Pass class object instance as parameter to another class object instance from main()

本文关键字:实例 对象 参数 参数传递 另一个 main      更新时间:2023-10-16

我在将类对象实例作为参数传递给另一个类对象实例的 main()函数的问题。基本上问题在下面的代码内部:

#include <something>
#include "another_thing"
class A
{
    void method1()
    {
        ;
    }
    void method2()
    {
        ;
    }
};
class B
{
    // Define an object of type class A
    A class_object;
    // Constructor
    B(A &passed_object)
    {
        class_object = passed_object;
        //other stuff here
    }
    void method1()
    {
        ;
    }
    void method2()
    {
        ;
    }
};
int main()
{
    A firstObject;
    B secondObject(firstObject);
    // Do something that changes A attributes;
    return 0;
}

问题是在main()执行期间,更改了FirstObject的某些属性,但是在B级BENSEN中,我看不到此更改。

编辑基于@holyblackcat提示,以这种方式解决:

A &class_object;中的修改A class_object;,从构造函数中删除了class_object = passed_object;,并更改了B(A &passed_object) : class_object(passed_object){}

中的构造函数的B(A &passed_object){}

由于 B()的参数是参考,只需将 firstObject传递给它确实没有复制。

,但您没有将A class_object;作为参考。当您在B()中分配它时,您正在制作副本。

您需要将课程字段作为参考:A &class_object;

并且由于您必须初始化 用它应该引用的对象的引用,因此您不得不使用成员初始化器列表

B(A &passed_object) : class_object(passed_object) {}