静的メンバ

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

静的メンバ

#1

投稿記事 by trans » 13年前

コード:

//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にして読み込み関数だけ引っ張ってきています

Fimbul
記事: 100
登録日時: 14年前

Re: 静的メンバ

#2

投稿記事 by Fimbul » 13年前

stageクラスのload関数の実装で、クラス名がstageではなくSTAGEになっています。

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

[修正]
分けてありますね。私の勘違いでした。
最後に編集したユーザー Fimbul on 2012年1月26日(木) 22:10 [ 編集 1 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 静的メンバ

#3

投稿記事 by softya(ソフト屋) » 13年前

このコードで一番考えられるのは、main.cppでStage.hをインクルードし忘れているってことではないでしょうか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

trans

Re: 静的メンバ

#4

投稿記事 by trans » 13年前

>>Fimbulさん
すいません
こちらの記述ミスです
元のソースコードではちゃんと同じ名前になっていました

コード:

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

>>softyaさん

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

閉鎖

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