ページ 11

静的メンバ

Posted: 2012年1月26日(木) 21:16
by trans

コード:

//Character.h

class character{
  public:
         static void load();   //自キャラ読み込み
  private:
      static int Mhandle;   //自キャラ格納変数
}

//Stage.h

class stage{
  public:
         static void load();    //ステージ読み込み
  private:
    static int Mhandle;   //ステージ格納変数

}

//character.cpp


void character::load(){
       Mhandle = MV1LoadModel(//ファイル名);
}


//STAGE.cpp

void STAGE::load(){
       Mhandle = MV1LoadModel(//ファイル名);
}


//main.cpp

main(void){
        character::load();     //ok
        stage::load();           // C2653,C3861
}
error C2653: 'stage' : 識別子がクラス名でも名前空間名でもありません。
error C3861: 'load': 識別子が見つかりませんでした


上記のエラーが解決できません
DXライブラリ、Windows7 VC++2010です

キャラやステージを読み込んでいるだけの関数ですが
なぜかステージの関数だけがエラーを出します

main.cppのほうには各ヘッダファイルはインクルードせず
関数をstaticにして読み込み関数だけ引っ張ってきています

Re: 静的メンバ

Posted: 2012年1月26日(木) 21:37
by Fimbul
stageクラスのload関数の実装で、クラス名がstageではなくSTAGEになっています。

また、テンプレートやインライン関数など例外はありますが、基本的にはヘッダファイルでクラスの定義をし、ソースファイルで関数の実装をする形式が良いです。

[修正]
分けてありますね。私の勘違いでした。

Re: 静的メンバ

Posted: 2012年1月26日(木) 21:57
by softya(ソフト屋)
このコードで一番考えられるのは、main.cppでStage.hをインクルードし忘れているってことではないでしょうか?

Re: 静的メンバ

Posted: 2012年1月26日(木) 22:58
by trans
>>Fimbulさん
すいません
こちらの記述ミスです
元のソースコードではちゃんと同じ名前になっていました

コード:

void Stage::load(){
       Mhandle = MV1LoadModel(//ファイル名);
}

>>softyaさん

確認したところ、main.cppにインクルードされているヘッダの中に、#include "hero.h"が記述されていました
ヘッダファイルの管理が甘かったようです