2013-03-09 3 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은 어느 라인입니까? –

+3

코드가 작동해야합니다. 위의 Andy Prowl과 일치하는 TFigure의 전체 정의를 –

+2

에 표시하십시오. btw,'delete test '도 잊지 마라. – varnie

답변

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^