gpt4 book ai didi

c++ - 写入另一个类的类中的变量

转载 作者:行者123 更新时间:2023-11-28 07:37:48 24 4
gpt4 key购买 nike

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

我从 Class1 写入 Class2 中的任何变量都没有任何问题。但是,我似乎无法从 Class1 永久写入 Class3 变量。我知道他们收到了正确的值,因为 read() 方法中的 cout 在赋值后将打印出正确的值。但是,粘贴到 print() 方法中的相同 cout 不会打印新值。好像他们被临时写了......

对类里面的疯狂感到抱歉

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 的构造函数正在尝试调用 Class3 中的 read(),它在 Class2 中声明...

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 对象中的原始值。这就是为什么您的值(value)观无法坚持。

另一种方法是添加一个setArray方法

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

然后

Class3 c3;
c3.read(string1, string2);
myClass2Array[i].setArray(myClass2Array[i].getCount(), c3);

关于c++ - 写入另一个类的类中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16392036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com