假设我的课程Class1
有一个声明为array1
的数组,所以在class1.h
中,我有类似
Class Class1{
public:
int array1[2];
}
然后,在另一个班级的.cpp
文件中,我有
Class1* class = new Class1();
int array0[2];
array0 = class->array1;
然而,这给了我错误
invalid array assignment
如何设置阵列的地址彼此相等,以便我可以远程修改它?
答案 0 :(得分:4)
您无法引用具有其他阵列的数组。您必须将引用绑定到相同类型的数组,或使用类似数组的类型,例如std::array<int, 2>
。
数组引用:
Class1 a;
int (&array0)[2] = a.array1; // array0 is a reference to a.array1
std::array
参考:
#include <array>
class Class1{
public:
std::array<int, 2> array1;
};
然后
Class1 a;
std::array<int, 2>& array0 = a.array1; // array0 is a reference to a.array1
这两种方法都可确保通过引用获得阵列的完整类型信息。这意味着,例如,您可以使用std::begin
和std::end
或基于范围的for循环中的引用。
请注意,class
是一个关键字。您不应该将它用于命名变量。
答案 1 :(得分:3)
如果您只需要访问相同的数组,则可以使用指针:
Class1* class = new Class1();
int *array0 = class->array1;