如何用c++中另一个数组的地址初始化一个数组
How do I initialize an array with the address of another array in C++?
假设我有一个类Class1
,它的数组声明为array1
,那么在class1.h
中,我有类似于
Class Class1{
public:
int array1[2];
}
然后,在另一个类的.cpp
文件中,我有
Class1* class = new Class1();
int array0[2];
array0 = class->array1;
然而,这给了我错误
invalid array assignment
如何设置数组的地址相等,以便远程修改?
不能用一个数组引用另一个数组。您必须将引用绑定到相同类型的数组,或者使用类似数组的类型,如std::array<int, 2>
。
数组引用:
Class1 a;
int (&array0)[2] = a.array1; // array0 is a reference to a.array1
std::array
reference:
#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
是一个关键字。你不应该用它来命名变量
如果您只需要访问相同的数组,则可以使用指针:
Class1* class = new Class1();
int *array0 = class->array1;