ページ 11

構造体について

Posted: 2015年1月31日(土) 23:47
by aridai
初めて、トピックを立てさせていただきます。
現在、DxLibとVC++を使ってゲームを制作しています。
ですが、構造体について困ったことがあるので、質問させていただきます。
ソースファイルをmain.cpp、game.cpp、loading.cppに分割して、
main.cppとgame.cppで使っているグラフィックハンドルを1つの構造体にまとめてloading.cppで使いたいのですが、
どのようにして渡せばよいかわかりません。

詳しく書くと
main.cpp - WinMain関数とタイトル画面の処理をする関数が記述されている。
game.cpp - gamemain関数(自作)が記述されている。
loading.cpp - loadfiles関数(自作)が記述されている。
そこでこの2つをloadfiles関数でロードしたいとします。
int g_handleTitleimage; // タイトル画面の画像 (main.cpp)
int g_handlePlayerimage; // プレーヤーの画像 (game.cpp)

自分で考えたのは

コード:

struct data{
  int handleTitleimage;
  int handlePlayerimage;
};
struct data picture;
[code]
これを3つのcppファイルの対応するヘッダファイルに書くことでしたが、
定義のしすぎなので、うまくいきません。
他にもいろいろ試したのですが、うまく行きませんでした。
正しい方法を教えて下さい。

Re: 構造体について

Posted: 2015年1月31日(土) 23:57
by aridai
struct data{
int handleTitleimage;
int handlePlayerimage;
};
この部分はdataの定義ですが、

struct data picture;
この部分はdata型の変数pictureを宣言しているという認識でいいですか。

Re: 構造体について

Posted: 2015年2月01日(日) 07:29
by box
aridai さんが書きました: これを3つのcppファイルの対応するヘッダファイルに書くことでしたが、
定義のしすぎなので、うまくいきません。
他にもいろいろ試したのですが、うまく行きませんでした。
定義のしすぎなのでうまくいかない、という状況がよくわかりません。
コンパイル時あるいは実行時に何かエラーメッセージが出ているのであれば、
そのすべてを見せてください。

Re: 構造体について

Posted: 2015年2月01日(日) 08:17
by みけCAT
box さんが書きました:
aridai さんが書きました: これを3つのcppファイルの対応するヘッダファイルに書くことでしたが、
定義のしすぎなので、うまくいきません。
他にもいろいろ試したのですが、うまく行きませんでした。
定義のしすぎなのでうまくいかない、という状況がよくわかりません。
想像ですが、

コード:

struct data picture;
の多重定義ではないでしょうか?

一つの方法としては、龍神録プログラミングの館の宣言の仕方を工夫しようを参考にするといいかもしれません。

Re: 構造体について

Posted: 2015年2月01日(日) 09:59
by aridai
少し、考えたのですが、
load.cppでインクルードガードをつけたmain.cppをインクルードしてみました。

コード:

struct data{
int handleTitleimage;
int handlePlayerimage;
};
とmain.hに書き、

コード:

struct data picture;
はmain.cppファイル内に記述しました。
するとうまくいきいました。
説明がヘタですみません。

Re: 構造体について

Posted: 2015年2月01日(日) 10:01
by aridai
上の"load.cppでインクルードガードをつけたmain.cppをインクルードしてみました。"は間違いです。
main.hでした。

Re: 構造体について

Posted: 2015年3月11日(水) 16:39
by aridai
ありがとうございました。