写入另一个类的类中的变量

Writing to variable within a class of another class

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

我正试图从Class1中写入Class3中的变量1和2。

从Class1中写入Class2中的任何变量都没有问题。然而,我似乎不能永久地从Class1写入一个Class3变量。我知道它们正在接收正确的值,因为在赋值之后,read()方法中的cout将打印正确的值。但是,粘贴到print()方法中的相同计数将不会打印新值。似乎他们暂时被写了……

对不起,这类疯狂

class Class1
{
public:
  Class1();
private:
  Class2 *myClass2Array;
};
Class1::Class1()
{
  myClass2Array = new Class2[size];
  myClass2Array[i].getArray(myClass2Array[i].getCount()).read(string1, string2); // this line is probably a problem
}

因此,Class1的构造函数试图调用Class2中声明的Class3中的read()…

class Class2
{
public:
  Class2();
  int getCount();
  Class3 getArray(int i) { return myClass3Array[i]; }
private:
  Class3 *myClass3Array;
  int count;
}; 
Class2::Class2()
{
  count = 0;
  myClass3Array = new Class3[8];
}

我也试过Class3 myClass3Array[8];并在for循环中初始化每个变量…这是Class3

class Class3
{
  string var1;
  string var2;
public:
  Class3();
  void print();
  void read(string, string);
}; 

Class3::Class3()
{
  var1 = "";
  var2 = "";
}
void Class3::print()
{
  cout << var1 << " and " << var2 << endl; // will print old, initiated values
} // end function print()
void Class3::read(string string1, string string2)
{
  var1 = string1;
  var2 = string2;
  cout << var1 << " " << var2 << endl; // will print new values
} // end function read()

我猜我的问题要么在我声明数组的方式,要么在我如何试图访问(写)它。什么好主意吗?

问题是您的Class2::getArray方法返回一个副本。

修改为返回一个引用

Class3& getArray(int i) { return myClass3Array[i]; }

问题是您正在设置Class3对象的副本的值,而不是Class2对象中的原始值。这就是为什么你的价值观不能坚持下去。

另一种方法是添加setArray方法

void setArray(int i, const Class3& a) { myClass3Array[i] = a; }
然后

Class3 c3;
c3.read(string1, string2);
myClass2Array[i].setArray(myClass2Array[i].getCount(), c3);
相关文章: