1人でゲームが作れるように修行します。2 (487レス)
1人でゲームが作れるように修行します。2 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
リロード規制
です。10分ほどで解除するので、
他のブラウザ
へ避難してください。
53: SGGK ◆6pZCoAtaxk [sage] 2010/07/25(日) 12:32:50 ID:p6Ls+avh > >>50の下6行で言いたいのは、こういう事とは違うの? そうです。その通りです。 「選手移動処理の関数」に「前半か後半かを判断する変数」つまり enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; を引数として持たせたい。 でも、この「前半か後半かを判断する変数」の宣言は、soccergame.hにあり、「選手移動処理の関数」の宣言はfieldplayercontrol.hにあるので、 fieldplayercontrol.hの中でsoccergame.hを#includeしなければ、引数として認識できないかなと思った。 でもそうするとfieldplayercontrol.hとsoccergame.hの両方に enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; があるので、コンパイルしたときに enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; void main{} と2重になるので、 C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。 というエラーが出てるのかと思った。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/53
54: SGGK ◆6pZCoAtaxk [sage] 2010/07/25(日) 12:35:16 ID:p6Ls+avh しかし、>>52氏の指摘が気になり、試しにfieldplayercontrol.hに enum MATCHSTATE{ FIRST_HALF=1,HALF_TIME,SECOND_HALF,RESULT_DISPLAY }; だけを直接書きこんでみると、 error C2011: 'MATCHSTATE' : 'enum' 型の再定義 というエラーが出た。 自分が思っていたバグの原因は間違いで、 >>50で >#include "soccergame.h"を消したら、コンパイルできた! ときのコンパイルできた理由はほかにあるらしく、 しかもenum MATCHSTATE{略};は問題なく認識されていたらしい…orz (>>52←指摘ありがとうございます!) http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/54
55: SGGK ◆6pZCoAtaxk [sage] 2010/07/25(日) 14:01:28 ID:p6Ls+avh 「error C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。」というエラーメッセージが出る原因について調査。 #include "soccergame.h"で発生したバグだから、そのsoccergame.hの中に';' が抜けてるところがあるのかと思ったが、良く見たけど見つからない。 他のヘッダーファイルに#include "soccergame.h"をやってコンパイルすると、 「error C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。」 が出る。"soccergame.h"に何かあるのか…。 もしかするとヘッダーファイル2重読み込み防止(いわゆるインクルードガード)の書き方が "soccergame.h"だけ何かの作業でずれたか消えたかしてたか?と見てみたがなんともない。 ためしに「ヘッダファイル 2重読み込み」で検索するとやっぱりこれといったのが無く、しかし、 その中に「ヘッダーファイルは慎重に扱わないと危険です」という言葉が目に付き、 クリックすると内容が難しすぎて解らなかったけど、雰囲気的に「循環参照」というのが気になる。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/55
56: SGGK ◆6pZCoAtaxk [sage] 2010/07/25(日) 14:03:02 ID:p6Ls+avh 自分のソースを見てみる。 fieldplayercontrol.h に soccergame.h をインクルードしたときを考えてみる。 soccergame.h は #include "fieldplayercontrol.h" してるので、 お互いがお互いをインクルードしあってる。 念のため、soccergame.h がインクルードしてないヘッダーファイルにsoccergame.hをインクルードしてみる。 これなら循環じゃないから、バグが出ないはずだと思ったが、 バグが出る場合と出ない場合がある。 バグが出ないと予想したのにバグが出たヘッダーファイルは、もしかするとsoccergame.hのインクルードしたヘッダーファイルからまたヘッダーファイルが呼ばれてて…のような感じで呼ばれていたのかもしれないが、調べきれず。 さらに error C2146: 構文エラー : ';' が、識別子 の前に必要です。 ヘッダーファイル 循環参照 で検索してみると、掲示板関係ばかり引っかかるけど、どうも循環参照が原因の可能性が高い。 「ヘッダーファイル内でのインクルードはできるだけ避けたい。」という書き込みもあるし。 仮に循環参照が原因として何故、「error C2146: 構文エラー : ';' が、識別子 'fieldplayercnt' の前に必要です。」というメッセージになるのかわからないけど、 とりあえずヘッダーファイルをインクルードしているうちに循環参照になっていたのが原因の可能性が一番高いと考えて、 >>51の課題挑戦を再開。 http://mevius.5ch.net/test/read.cgi/gamedev/1272901469/56
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s