配列の要素にclassを格納

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
かかし

配列の要素にclassを格納

#1

投稿記事 by かかし » 12年前

今までは似たようなことを問題無く書いて来たのですが
今回は妙なエラーを吐き、また原因を色々考えたのですがわかりません。
やりたいことはKontenaClassをコンテナとした二次元配列kontenahairetuを持つHairetuClassを作り、Stage.cppの方でその要素の中を確認する、というものです。

<KontenaClass.h>

コード:

void KontenaClass{
public:
      KontenaClass(void);
     ~KontenaClass(void);
     void Initialize(void);
  あと、それぞれのゲッター(割愛
private:
      bool a.flg;
      bool b.flg;
      bool c.flg;
};
<KontenaClass.cpp>

コード:

KontenaClass::KontenaClass(void){}
KontenaClass::~KontenaClass(void){}
あと、それぞれの変数を返すゲッター(割愛

void KontenaClass::Initialize(void){
      a.flg = false;
      b.flg = false;
      c.flg = false;
}
<HairetuClass.h>

コード:

class HairetuClass{
public:
static HairetuClass* HairetuClass();
	static vector<vector<KontenaClass*> >kontenahairetu;
	void Initialize(int,int);		
private:
	HairetuClass(void);
	~HairetuClass(void);
	static HairetuClass* instance;
};
<HairetuClass.cpp>

コード:

HairetuClass::HairetuClass(void){}
HairetuClass::~HairetuClass(void){}

HairetuClass* HairetuClass::getInstance()
{
	if(instance==0)
	{
		instance = new HairetuClass();
	}
	return instance;
}
void HairetuClass::Initialize(int m_line,int m_col){
    //受け取った値で行と列を決める
	kontenahairetu.resize(m_line);
	for(int i = 0; i<m_line; i++){
		kontenahairetu[i].resize(m_col);}

	//KontenaClassをすべての要素に格納
	for(int line=0; line<m_line; line++)
	{
		for(int col=0; col<m_col; col++)
		{
			KontenaClass* add = new KontenaClass();
			add->Initialize();
			kontenahairetu[line][col] = add;
		}
	}
}
<Stage.cpp>

コード:

~色々割愛~
m_line = 10;
m_col = 10;	
HairetuClass::getInstance()->Initialize(m_line,m_col);

for(int i=0; i<m_line; i++){
     for(int j=0; j<m_col; j++){
           if(HairetuClass::getInstance()->kontenahairetu[i][j]->getaflg() == false) ←ここでエラー
           { Draw~
           }else{ Draw~}
  }
}
エラーの文面はこれ↓で、わけわかりません。
1>Stage.obj : error LNK2001: 外部シンボル ""public: static class std::vector<class std::vector<class KontenaClass *,class std::allocator<class KontenaClass *> >,class std::allocator<class std::vector<class KontenaClass *,class std::allocator<class KontenaClass *> > > > HairetuClass::kontenahairetu" (?kontenahairetu@HairetuClass@@2V?$vector@V?$vector@PAVKontenaClass@@V?$allocator@PAVMapState@@@std@@@std@@V?$allocator@V?$vector@PAVKontenaClass@@V?$allocator@PAVKontenaClass@@@std@@@std@@@2@@std@@A)" は未解決です。

(「error LNK1120: 外部参照 1 が未解決です。」も続きます)

アバター
usao
記事: 1892
登録日時: 13年前
連絡を取る:

Re: 配列の要素にclassを格納

#2

投稿記事 by usao » 12年前

HairetuClassに staticメンバ変数 kontenahairetu を宣言したが,その実態が定義されていない
ということでは.

#それとは別に, a.flg とかいう変数名もコンパイル通らなそう

かかし

Re: 配列の要素にclassを格納

#3

投稿記事 by かかし » 12年前

>HairetuClassに staticメンバ変数 kontenahairetu を宣言したが,その実態が定義されていない

なんか、staticを消したら解決しました!

かかし

Re: 配列の要素にclassを格納

#4

投稿記事 by かかし » 12年前

というかstaticしてた配列を実体化させてませんでした…
お騒がせしました

閉鎖

“C言語何でも質問掲示板” へ戻る