マップの二次元配列がmain.cppに来ると初期化されるのが分からない。
Posted: 2011年9月12日(月) 23:04
RPGを書いているC++一年目のものですが、今回RPGを作ろうと思い立ち、さっそく書き始めたのですが、しょっぱなからつまずいてしまいオロオロしている状態です。
プログラム構造としては、main.cppはGlovalVariable.hを読み込み、その他の.cppにはGlovalVariable.hの中身に宣言の最初にexternをつけたExternGV.hを読み込んでいる感じです。
マップデータをmain.cppのDxLibを使う前の空間でグローバル宣言のように定義するとできるのですが、main.cpp以外の.cppファイルの中で関数で初期化すると、なぜか配列に何も入ってない状態になってしまいます。ここを、関数内で定義した二次元配列を全部の.cpp内(main.cppも含め)で共有したいのですが、分からないので、質問させていただきました。
もちろん両者の.hではexternn int MapData[ MAP_HEIGHT ][ MAP_WIDTH ];がExternGV.hに、ないパターンGlobalVariable.hに書かれています。
main.cpp内部ではextern Format();として読み込んでいます。
質問の仕方が分からなくて・・・。どこのファイルがないと分からないなどとコメントいただければ幸いです。
プログラム構造としては、main.cppはGlovalVariable.hを読み込み、その他の.cppにはGlovalVariable.hの中身に宣言の最初にexternをつけたExternGV.hを読み込んでいる感じです。
マップデータをmain.cppのDxLibを使う前の空間でグローバル宣言のように定義するとできるのですが、main.cpp以外の.cppファイルの中で関数で初期化すると、なぜか配列に何も入ってない状態になってしまいます。ここを、関数内で定義した二次元配列を全部の.cpp内(main.cppも含め)で共有したいのですが、分からないので、質問させていただきました。
#include "DxLib.h"
#include "EXternGV.h"
void Format(){
int MapData[ MAP_HEIGHT ][ MAP_WIDTH ] =
{
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
{ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0 , 1, 1, 1, 1, 1, 1, 1, 1, 1, 0 } ,
{ 0, 0, 1, 1, 1, 0, 0, 0, 0, 0 , 1, 0, 0, 0, 0, 0, 0, 0, 1, 0 } ,
{ 0, 0, 1, 0, 1, 0, 0, 0, 0, 0 , 1, 1, 1, 1, 1, 1, 0, 0, 1, 0 } ,
{ 0, 1, 1, 0, 1, 0, 0, 1, 1, 0 , 0, 0, 0, 0, 0, 1, 0, 0, 1, 0 } ,
{ 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 , 0, 0, 1, 1, 1, 1, 1, 0, 1, 0 } ,
{ 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 , 0, 0, 1, 0, 0, 1, 1, 0, 1, 0 } ,
{ 0, 1, 0, 0, 1, 0, 0, 1, 1, 0 , 0, 0, 1, 0, 0, 1, 1, 0, 1, 0 } ,
{ 0, 1, 1, 1, 1, 1, 1, 1, 1, 0 , 0, 1, 1, 0, 0, 1, 1, 0, 1, 0 } ,
{ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0 , 0, 1, 1, 0, 0, 1, 1, 0, 1, 0 } ,
{ 0, 0, 0, 0, 1, 0, 0, 1, 0, 0 , 0, 1, 1, 0, 0, 1, 1, 0, 1, 0 } ,
{ 0, 0, 0, 1, 1, 0, 0, 1, 0, 0 , 0, 1, 1, 0, 0, 1, 1, 0, 1, 0 } ,
{ 0, 1, 1, 1, 1, 0, 0, 1, 1, 1 , 1, 1, 1, 0, 0, 1, 1, 0, 1, 0 } ,
{ 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 } ,
{ 0, 1, 1, 1, 1, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 } ,
{ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 , 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } ,
} ;
}
main.cpp内部ではextern Format();として読み込んでいます。
質問の仕方が分からなくて・・・。どこのファイルがないと分からないなどとコメントいただければ幸いです。