2013-03-09 84 views
2
int main (void) 
{ 
    int** arr = new int*[4]; 
    for (int i = 0; i < 4; i++) arr[i] = new int[4] {1, 0, 0, 1}; 

    const int* p = &(arr[0][0]); 

    TFigure* test = new TFigure(arr, 4, 4); 
    test->resolve(); 

    for (int i = 0; i < 4; i++) delete[] arr[i]; 
    delete[] arr; 

    return 0; 
} 

其中構造函數聲明爲 線57:錯誤的雙指針數組參數

TFigure(int **ia, int n, int m) 
    N = n; 
    M =m; 

    landscape = new int*[n]; 
    puddles = new int*[n]; 
    for (int i = 0; i < n; i++){ 
     landscape[i] = new int[m]; 
     puddles[i] = new int[n]; 
     for (int j = 0; j < m; j++) 
      landscape[i][j] = *ia[i][j]; 
     } 


    for (int i = 0; i < n; i++) 
     for (int j = 0; j < 0; j++) 
      if (i == 0 || i == N || j == 0 || j == M) 
       puddles[i][j] = 0; 
      else 
       puddles[i][j] = 1; 

    for (int i = 0; i < N; i++){ 
    for (int j = 0; j < M; j++) 
    std::cout << puddles[i][j] << ' '; 
    std::cout << std::endl; 
    } 
    for (int i = 0; i < N; i++){ 
    for (int j = 0; j < M; j++) 
    std::cout << landscape[i][j] << ' '; 
    std::cout << std::endl; 
    } 


}; 

,但我有一個錯誤

57:43: error: invalid type argument of unary «*» (have «int»)

我不明白是什麼原因造成這一點。

+4

哪條線是線57? – 2013-03-09 12:02:21

+3

您的代碼應該工作。請出示TFigure'的'全高清 – 2013-03-09 12:03:34

+2

同意上述安迪警車。順便說一句,不要忘記'刪除測試;'以及。 – varnie 2013-03-09 12:08:32

回答

2

問題是這一行:

landscape[i][j] = *ia[i][j]; 

ia[i][j]給你一個int你再嘗試取消引用。好像你真的只是想:

landscape[i][j] = ia[i][j]; 

我不知道這是否是一個錯誤,當複製和粘貼或沒有,但你的構造定義缺少一個左{

TFigure(int **ia, int n, int m) { 
//       Here^