如何从另一个类中的一个类调用setter函数?

问题描述

我正在尝试从Class A中的class B调用setter函数,但是我无法执行此操作,我也不知道为什么。 (我是C ++的初学者,我需要这样做,因为它与我的作业有关。)

这是我的代码:

#include <iostream>

using namespace std;

class A{
private:
  int i = 2;
public:
  int getInt(){
    return i;
  };
  void setI(int a){
    i = a;
  }
};

class B{
private:
  int c = 3;
public:
  void setAI(A a){
    a.setI(c);
  }
};

int main() {
  A a;
  B b;

  cout << a.getInt() << endl;
  b.setAI(a);
  cout << a.getInt() << endl;
  a.setI(5);
  cout << a.getInt() << endl;
}

我得到的输出是:

2
2
5

当我想得到的时候:

2
3
5

解决方法

我刚刚在setAI()函数中进行了一些更改。我已经按地址而不是值传递了对象。我不确定是什么引起了该问题(因为我也是初学者),但是指针已解决了问题。

#include <iostream>

using namespace std;

class A{
private:
  int i = 2;
public:
  int getInt(){
    return i;
  };
  void setI(int a){
    i = a;
  }
};

class B{
private:
  int c = 3;
public:
  void setAI(A *a){
      a->setI(c);
  }
};

int main() {
  A a;
  B b;

  cout << a.getInt() << endl;
  b.setAI(&a);
  cout << a.getInt() << endl;
  a.setI(5);
  cout << a.getInt() << endl;
}

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...