이 할당은 동적으로 할당 된 매트릭스를 선언하고 사용해야 할 곳입니다. 알려진 데이터가있는 7X7 그리드로 초기화되었습니다. (아래 참조)동적으로 할당 된 매트릭스는 포인터에 대한 포인터를 얻지 못합니다.
적어도 천 가지 방법을 시도했지만 컴파일러가 가져올 수 없을 때마다 캐스팅 int []와 관련된 문제를 경고합니다. []에서 int **. 코드 스크린 샷을 추가하고 도움을받을 것입니다!
#include <cstdlib>
#include "Map.h"
typedef int size_type;
typedef int** grid_type;
grid_type ppGrid;
size_type size_h;
size_type size_w;
int mapInitializer[7][7]=
{
{ 0 , 1 , 1 , 1 , 1 , 1 , 1},
{ 1 , 2 , 2 , 0 , 1 , 0 , 1},
{ 0 , 0 , 1 , 1 , 1 , 2 , 1},
{ 1 , 0 , 0 , 0 , 0 , 0 , 1},
{ 1 , 1 , 1 , 2 , 1 , 0 , 1},
{ 1 , 0 , 0 , 0 , 0 , 2 , 1},
{ 1 , 0 , 1 , 1 , 1 , 1 , 1}
} ;
Map::Map(){
grid_type ppGrid;
realloc(ppGrid,7);
for(int i=0;i<7;i++){
realloc(ppGrid[i],7);
}
ppGrid=mapInitializer;
}
[2 차원 배열은 이중 포인터입니까?] http://stackoverflow.com/questions/7586702/is-2d- array-a-double-pointer) – CIsForCookies
(1) ** 포인터 타입이라면 ** typedef 뒤에 포인터 타입을 숨기지 마라. 그것은 포인터로 가능한 가장 오류가 발생하기 쉬운 방법입니다. (2) 이중 포인터는 2 차원 배열이 아니므로 이중 포인터에 2 차원 배열 유형의 변수를 할당 할 수는 없습니다. 이들은 호환되지 않는 유형입니다. (3) 직접 메모리를 관리하는 것이 아니라'std :: vector> '을 사용하십시오. (4) 한 번에 하나씩 * 행을 복사하십시오. (5) 다음 번 게시물 코드는 텍스트가 아닌 이미지입니다. 이미지를 컴파일러로 복사하여 코드를 검사 할 수는 없습니다. –
StoryTeller
@StoryTeller 안녕하세요, thx! 이미지가 아닌 실제 코드로 게시물을 업데이트했습니다. 슬프게도 typedef를 사용해야하고 벡터를 사용할 수 없습니다. 내가 할 수 있으면 좋겠어. 동적으로 할당 된 행렬로 모든 일이 이루어져야합니다. –