如何在C ++中使用另一个数组的地址初始化数组?

时间:2014-03-24 09:24:41

标签: c++ arrays

假设我的课程Class1有一个声明为array1的数组,所以在class1.h中,我有类似

的内容
Class Class1{
public:
    int array1[2];
}

然后,在另一个班级的.cpp文件中,我有

Class1* class = new Class1();
int array0[2];
array0 = class->array1;

然而,这给了我错误

invalid array assignment

如何设置阵列的地址彼此相等,以便我可以远程修改它?

2 个答案:

答案 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::beginstd::end或基于范围的for循环中的引用。

请注意,class是一个关键字。您不应该将它用于命名变量。

答案 1 :(得分:3)

如果您只需要访问相同的数组,则可以使用指针:

Class1* class = new Class1();
int *array0 = class->array1;