2012-05-28 2 views
0

은 내가 전 세계적으로 내부다차원 배열은 C++

vector<Character*> monsters[2][3][6]; 
vector<Item*> loot[2][3][6]; 
vector<NPC*> npc[2][3][6]; 
vector<Objects*> objects[2][3][6]; 

내 메인 루프 위에 다음과 같은 정의 나 C++

비교적 새로운 오전으로 무슨 일이 일어나고 있는지 정확히 모르겠어요 객체 내 Character.h 파일 또한 객체 배열을 정의했습니다.

extern vector<Objects*> objects[2][3][6]; 

객체 배열을 만들 때까지 모든 것이 잘 작동했습니다.
괴물 배열에 8 개 이상의 개체를 추가하면 이상한 값이 개체에 나타나기 시작하고 개체의 크기가 커지는 것으로 보입니다.
코드가 엉망이며 여기에 정확히 무엇을 포함해야하는지 잘 모르겠습니다. 이게 내가 너에 대한 생각을 줄 수 있기를 바란다. 그것은 아주 잘 내 배열의 모든 발생할 수 있습니다 그래서 철저하게이 시험하지 않았다

은 ...

+4

중첩 벡터 또는 중첩 된'std :: array' 대신'vector'를 사용하는 이유는 무엇입니까? – pmr

+1

개체/괴물을 배열에 삽입하는 데 사용하는 코드를 표시 할 수 있습니까? 그리고 배열에 접근하여 배열에 이상한 객체가 있는지 확인하십시오. –

+0

@pmr 나는 새로운 접근 방식을 취하는 방법을 잘 모르고있었습니다. 내가 선택한 이유는 괴물 [지도] [zoneX] [zoneY]을 설정하고 그지도 구역에있는 모든 몬스터의 벡터를 설정했기 때문입니다. – FallingReign

답변

0

"넘치는"이고 외부 물건을 올려 놓지 않도록 괴물 배열이 충분하지 않은 것을 나타납니다 따라서 배열이 다른 배열 내에서 끝납니다.

불편을 끼쳐 드려 죄송합니다. 나는 이것이 누군가를 돕기를 바랍니다.

0

궁극적으로 자신의 필요에 맞는 작은 Grid 클래스를 작성하거나 이러한 경우를 처리하려면 Boost.MultiArray을 사용하고 싶습니다. 중첩 된 원시 배열로 작업하면 장기적으로 엉망이됩니다. 어쩌면 포인터를 저장하지 않고 값으로 객체를 저장하는 것을 피하기를 원할 수도 있습니다.