从int转换为int ** C ++的转换无效

时间:2010-04-20 19:09:53

标签: c++ pointers casting

不确定我为什么会收到此错误。我有以下内容:

int* arr = new int[25];

int* foo(){
   int* i;
   cout << "Enter an integer:";
   cin >> *i;
   return i;
}

void test(int** myInt){
   *myInt = foo();
}

This call here is where I get the error:

test(arr[0]);   //here i get invalid conversion from int to int**

1 个答案:

答案 0 :(得分:7)

您编写它的方式,test会指向指向int的指针,但arr[0]只是int

但是,在foo中,您正在提示int,但会读取一个未初始化指针值的位置。我原以为您希望foo阅读并返回int

E.g。

int foo() {
   int i;
   cout << "Enter an integer:";
   cin >> i;
   return i;
}

在这种情况下,测试采用指向int的指针(即void test(int* myInt))是有意义的。

然后你可以传给一个指向你动态分配的int之一的指针。

test(&arr[0]);