클래스를 정의하려고합니다. - 할당 된 배열의 첫 번째 차원을 동적 크기를 가질 수C++ 배열 크기 초기화
enum Tile {
GRASS, DIRT, TREE
};
class Board {
public:
int toShow;
int toStore;
Tile* shown;
Board (int tsh, int tst);
~Board();
};
Board::Board (int tsh, int tst) {
toShow = tsh;
toStore = tst;
shown = new Tile[toStore][toStore]; //ERROR!
}
Board::~Board() {
delete [] shown;
}
그러나, 나는 표시 줄에 다음과 같은 오류가 발생합니다 : 이것은 내가 가지고있는 것입니다.
내가 할 수 있기를 원하는 것은 오히려 하드 코딩하는 것입니다. 매개 변수 toShow를 생성자에 전달하고 표시하려는 요소 만 포함하는 2 차원 배열을 만듭니다.
그러나 이해해야 할 것은 생성자가 호출되고 표시되는 것이 초기화되면 크기가 toStore의 현재 값으로 초기화된다는 것입니다. 그러면 toStore가 변경 되더라도 메모리는 표시된 배열에 이미 할당되어 있으므로 크기가 변경되지 않아야합니다. 그러나 컴파일러는 이것을 좋아하지 않습니다.
내가 이것을 어떻게 이해하고 있는지에 대한 오해가 있습니까? 누구든지 배열의 크기로 하드 코드하지 않고도 원하는대로 할 수정 프로그램이 있습니까? 당신이 2 차원 배열을 참조 할 경우
우선, 2D 포인터가 필요합니다 : '타일 ** 표시됨'. 조금만 읽어보십시오. 어떻게하는지 배웠다면 대신'std :: vector'를 사용하십시오. – chris
http://ideone.com/gytw7 –
@ R.MartinhoFernandes, 나는 당신이 묘사 한 이유 때문에 그 일에 열심히 노력해야 만했습니다. 나는 한 번에 한 번씩 C 스타일의 가변 인자로 내 자신의 'xarray'를 만들었다. – chris