2010-04-20 115 views
0

不知道爲什麼我得到這個錯誤。我有以下幾點:從int到int的轉換無效** C++

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** 
+2

它不是編譯錯誤的來源,但是你在'foo()'中有一個邏輯錯誤 - 你聲明一個指針但是不會初始化它。當你執行該功能時,它很可能會崩潰。 – 2010-04-20 19:25:26

+0

希望它會崩潰。它可能不會,這會更糟糕。未初始化的指針== baaaaad。 – 2010-04-20 20:01:46

+0

我刪除了關於函數指針和成員指針的標籤;你的問題只是關於數據指針。 – 2010-04-20 20:41:39

回答

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]);