设置一个类的值,另一个类

Set a value of a class from another class

本文关键字:另一个 一个 设置      更新时间:2023-10-16

我正在尝试使用此代码段设置另一个类的类成员的值。这是我尝试工作的代码示例

class A
{
private:
int a;
public:
A()
{
    a = 0;
}
A(int val)
{
    a = val;
}
int GetA()
{
    return  a;
}
void SetA()
{
    a = 290;
}
};

class B
{
B(){};
 void SetB()
{
     A a;
     a.SetA();
}
};

int main(){
A a;
B b;
b.SetB();
cout << b.GetA();
}

我怎样才能使这段代码290 .我目前打印出 0

SetB您的 A 变量是一个临时变量,当函数返回时会被销毁。

它在你的代码段中编写的方式,你的代码不会编译,因为B没有方法GetA()。 从您的用例(main()中的代码)中,我怀疑您希望BA继承:

class B : public A
{
public:
  B() {];
  void SetB()
  {
    SetA();
  }
};

虽然这没有多大意义,因为在这种情况下,您可以直接拨打b.SetA()或者,您希望将类型为 A 的对象作为 B 的成员:

class B
{
public:
  void SetB()
  {
    a.SetA();
  }
  int GetA()
  {
    return a.GetA();
  }
private:
  A a;
};

但是很难从你的代码片段中看出你实际想要实现的目标。

此外,您可能希望const Get…()方法。

如果你想实现我认为你想要实现的目标,那么你就快到了,只是你正在创建两个版本的 A,一个在主堆栈上,另一个是 B::SetA() 中的临时版本。

尝试将 A 作为引用参数传递给 B,以便只有一个版本的 A。

void SetB(A& a)
{
     a.SetA();
} 

那么你的调用代码将是:

A a;
B b;
b.SetB(a);
cout << a.GetA();

或者,在 B 的构造函数中传递 a,并将 A 作为引用成员存储在 B 中;

相关文章: