【发布时间】:2018-11-21 10:14:08
【问题描述】:
我有一个 C++ 类,它有一个函数,该函数从同一类的另一个变量中获取一个二维数组,以便该数组的这个特定实例可以访问另一个变量。有问题的变量是一个二维数组。给定下面的代码,您将如何实现访问器函数来获取私有二维数组变量。我的意图是让访问器返回 2d 数组,但我不知道要使用哪种返回类型。 int[][]、int**、int* 和 int 不起作用。
class MyClass{
public:
// gets private x variable from another MyClass variable
void proccessVar(const MyClass& aVar){
// get and process the 2D array by calling getX()
// int temp[10][10];
// temp = aVar.getX();
// proccess temp 2D array
}
// Return 2D array x
int** getX(){
return x;
}
private:
int x[10][10] = {{0},{0}}; // initialized value
}
【问题讨论】:
-
有什么理由不使用 std::array?
-
为什么
int**不起作用? -
@Korni 返回 x 我收到错误:无法将'int ()[10]' 转换为'int*' 作为回报。
-
@Korni 因为
x在衰减为指针时不是“指向 int 指针的指针”类型,而是“指向 10 个 int 数组的指针”。int**与int (*)[10]不同。如果int **a; a[1][2]编译器执行*( *(a + 1) + 2)如果int (*a)[10]; a[1][2]然后编译器执行*( a + 1 * 10 + 2 )。
标签: c++ arrays multidimensional-array