안녕하세요 저는 C++에서 OO 디자인을 사용하여 간단한 팩맨을 작성하고 있습니다. 2D 배열의 내용을 표시하는 데 문제가 있습니다. 배열은지도/미로의 벽을 나타내는 많은 기호를 유지합니다.OO 디자인에서 다차원 배열을 표시하는 방법 C++
Game.h
class Game
{
private:
char map;
public:
Game();
void displayMap();
};
을
char map[10][20] = {...};
void Game::displayMap()
{
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < 20; j++)
{
cout << map[i][j] << " ";
}
cout << endl;
}
}
컴파일러는 오류를 나타납니다 Game.cpp
[i]
에서
"expression must have pointer-to-object type"
말 : 여기에 내가 쓴 샘플 코드입니다.
그러나 생성자
Game.h
class Game
{
private:
char map[10][20];
};
Game.cpp
Game::Game()
{
char map[10][20] = {...};
}
그것은을 정의 할 때 나는 헤더 파일에 배열의 크기를 정의하고 그 값을 할당하는 경우 컴파일하지만 배열의 내용을 표시하려고 할 때 (displayMap()
의 동일한 코드를 사용하여), 나는 그것이 정크로 가득하다는 것을 알았다. 나는 그 할당이 과제가 아니기 때문이라고 생각합니다. 실제로 스택상의 다른 배열을 초기화하므로 생성자가 완료된 후에 배열이 소멸되고 그 때 displayMap()
에 원래의 할당되지 않은 배열이 표시됩니다.
내가 틀릴 수도 있으므로 저를 고쳐주십시오. 나는 그래서 당신이 외부를 숨기 인스턴스 변수의 같은 이름의 지역 변수를 재 선언이 문제 여기
죄송합니다, 나는'문자지도 [10] [20]을 보았다고 생각 = {.. .};'두 번째 헤더의 헤더에. * 그 * 잘 작동합니다. 'std :: array'를 사용하는 것이 훨씬 쉽습니다. – chris