首页 > 解决方案 > 从另一个类更改一个类的数据成员的值

问题描述

    #include <iostream>
    using namespace std;

    class B{
    public:
        int x;
        void setx(int a){
            x =a;
            cout<<"Inside set "<<x<<endl;
        }
        void show();
    };

    void B::show(){
        cout<<"inside show "<<x<<endl;
    }

    class A{
    public:
        void func();
        void func2();
        B bb;
    };
    void A::func(){
        bb.setx(100);
        bb.show();
    }
    void A::func2(){
        bb.show();
    }
    int main()
    {
       A a;
       B b;
       a.func(); 
       b.show(); 
       a.func2(); 
       return 0;
    }

更改仅适用于 A 类,其中 B 类的实际值没有变化。我尝试了静态,但它显示错误。

我得到的输出: 内部设置 100 内部显示 100 内部显示 0 内部显示 100

我想要的输出: 内部设置 100 内部显示 100 内部显示 100 内部显示 100

标签: c++oop

解决方案


不是对象。它是一种用户定义的数据类型,可以通过创建该类的实例来访问和使用。类的一个实例是一个对象。

现在,在您的main函数中,当您A通过编写实例化类对象时A a;,的构造函数class A实例化数据成员bb(类型为B)。B然后,您可以在函数中创建另一个类型的对象main,方法是编写B b;. 这个类的实例化与你B的数据成员无关。要获得所需的输出,您需要.bbclass Aa.bb.show()

要清楚:

struct Airplane {};

Airplane a1, a2, a3;

我有 3 架飞机,每架飞机都是class Airplane, 3 个类型的对象的实例Airplane。改变a1并不意味着改变a2a3


推荐阅读