크기가 비공개 2D 배열을 가질 수있는 클래스는 생성자를 통해 전달 된 변수에 의해 어떻게 결정됩니까?가변 길이의 생성시 2D 배열 만들기
class World {
private:
const int WIDTH;
const int HEIGHT;
bool map[][];
public:
World(const int MAX_X, const int MAX_Y) : WIDTH(MAX_X), HEIGHT(MAX_Y) {
map = new bool[WIDTH][HEIGHT];
}
};
하지만이 경우에도 방법 declaration of ‘map’ as multidimensional array must have bounds for all dimensions except the first
및 array size in operator new must be constant
에 대한 오류의 무리를 얻을 :
나는 이것을 시도했습니다.
class World {
private:
const int WIDTH;
const int HEIGHT;
bool map[WIDTH][HEIGHT];
public:
World(const int MAX_X, const int MAX_Y) : WIDTH(MAX_X), HEIGHT(MAX_Y) {
//map = new bool[WIDTH][HEIGHT];
}
};
내가
const int WIDTH
라인과지도 선언 라인에
error: from this location
꽤 쓸모에
invalid use of non-static data member ‘World::WIDTH’
를 얻을 : 하나
나는 또한이 방법을 시도했지만 작동하지 않았다.
내가 뭘 잘못하고 있니?
편집 : 나는이 클래스에서 아직 학습하지 않았기 때문에 벡터를 사용하지 않는 것이 좋습니다. (배운 것은 내가 그들을 사용하는 방법을 알고 있지만 교수는 그것들에 대해 토론하지 않았고 외부 지식을 사용하는 것을 좋아하지 않는다)
제안 - 변수의 이름을'map'으로 지정하지 마십시오. – PaulMcKenzie
C 스타일 배열은 매우 까다 롭습니다. 그래서 우리는 사람들에게 사용하지 말 것을 권고합니다. 컴파일시에 너비와 높이를 알고 있으면 배열을 만들 수 있습니다. –
지도 이름을 지정하지 않아야하는 이유는 무엇입니까? 그리고 치수는 공사가 아니라 이전에 알려졌습니다. – Malfist