Неверное преобразование из int в int ** C ++ - PullRequest
0 голосов
/ 20 апреля 2010

Не уверен, почему я получаю эту ошибку. У меня есть следующее:

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 Ответ

7 голосов
/ 20 апреля 2010

Как вы написали, test получает указатель на указатель на int, но arr[0] - это просто int.

Однако в foo вы запрашиваете int, но читаете в местоположение, которое является значением неинициализированного указателя. Я бы подумал, что вы хотите, чтобы foo прочитал и вернулся, и int.

* 1013 Е.Г. *

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

В этом случае для теста будет иметь смысл взять указатель на int (т.е. void test(int* myInt)).

Тогда вы можете передать ему указатель на один из int, который вы динамически выделяете.

test(&arr[0]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...