2014-12-17 1 views
0

가정한다 우리는 10 × 10의 2 차원 배열을 만들고 (100)의 첫 번째 셀 설정 다음 가지고포인터 클래스의 클래스/동적 메모리 멤버 변수로서

class twoD{ 
    int **p = new int*[10]; 
public: 
    twoD(){ 
     *p = new int[10]; 
     p[0][0] = 100; 
    } 
}; 

왜이 확인 될 때이다 다음은 그렇지 않습니다.

class twoD{ 
    int **p = new int*[10]; 
    *p = new int[10]; 
public: 
    twoD(){ 
     p[0][0] = 100; 
    } 
}; 
+0

확실히 "2 차원 어레이"와는 아무런 관련이 없습니다. 또는 포인터. – juanchopanza

+0

이들 중 어느 것도 실제로 제대로 초기화 된 2D 배열로 끝나지 않습니다. 당신은 정말로 당신의 생성자가 다음과 같은 것을하기를 원한다 : for (int i = 0; i <10; ++ i) {p [i] = new int [10]; }'그리고 일치시킬 소멸자가 있으면 더 좋을 것이다. – Charlie

답변

1

두 번째 경우 "* p = new int [10];" 변수 선언이 아니므로 클래스 정의에 포함될 수 없습니다.