c++ - 从另一个类更改一个类的数据成员的值

标签 c++ oop

    #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 类的实际值没有变化。我试过 static 但它显示错误。

我得到的输出: 内装100 里面显示 100 里面显示 0 里面显示 100

我想要的输出: 内装100 里面显示 100 里面显示 100 里面显示 100

最佳答案

尝试:

int main()
{
   A a;
   B b;
   a.func(); 
   a.bb.show(); 
   a.func2(); 
   return 0;
}

您在错误的对象上调用了 show()。因为 a 有它自己的 bb,你需要使用 a.bb 来查看变化。 main 中的 b 是不同的对象(即使属于同一类)。

关于c++ - 从另一个类更改一个类的数据成员的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56651018/

相关文章:

c++ - 传递 "No/Null/0"作为引用?

c++ - 二维数组初始化错误?

c++ - "check"如果两个不同几何形状的物体发生碰撞

java - 从单一父类(super class)继承的各种DS的合理实现

c - C语言实现数据隐藏访问说明符

javascript - Javascript 中的面向对象问题

C++ fileIO 行数

c++ - void()是有效的C++表达式吗?

java - 运行时类型识别

java - 设计模式 - 事件或直接引用