写入另一个类的类中的变量
Writing to variable within a class of another class
我正试图从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);
相关文章:
- 如何从另一个文件继承私有成员变量和公共函数
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 一个变量的输入值也会保存到另一个变量中
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 在另一个函数 (c++) 中调用变量
- 将双精度变量设置为另一个变量的值
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 我有一个类,它创建了另一个类的实例.如何将变量通过第一个类传递到第二个类的实例化中?
- 为什么我可以使用 memcpy 将一个对象变量复制到另一个对象变量
- 为什么一个变量获得与另一个值相同的值
- 类中的一个变量显示,但另一个不显示
- c++问题:给一个变量赋值后,另一个变量发生了变化
- 在一个子程序中输入的变量用于C++中的另一个子程序
- (C++) 从另一个类访问变量时值无效
- 我如何将一个变量与另一个变量进行比较,例如我想如果(var1 > var2 x 1),然后执行此 c++
- 如何在一个函数中定义一个变量,并在另一个函数中访问和更改它?(C++)
- 如果一个变量在它之前释放了另一个(相同的数据类型)变量,如何将其分配给内存?
- 将变量从主窗口传递到另一个qt c++窗体
- memcpy() 在一个类中被调用以复制到另一个类变量中后会引发异常
- 将 int 转换为字符串,然后连接另一个变量以创建完整扩展名,然后将其转换为 const_char*