私とusaoさんが前方宣言の話をしていました。前方宣言を上手く使うことで構造体の構造を隠蔽できます。私のRPG講座が例になります。他は相互作用がないので、今のところ問題ないです。今後相互作用を追加していく時にカプセル化を守れるかが課題です。struct.hのようなファイルを作ってそこに書いたほうがいいでしょうか?カプセル化、オブジェクト化などはやったことがないので四苦八苦しています。C言語のカプセル化の場合は、構造体の実構造は構造体のメンバを使う関数群があるcppファイルの先頭に記述します。しておいて、前方宣言だけをヘッダファイルに記述します。struct.hは使いません。私のRPG講座の例もそうなっているはずです。私のRPG講座の例で分からないことがあれば聞いてくださいね。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。C言語のカプセル化の場合は、構造体の実構造は構造体のメンバを使う関数群があるcppファイルの先頭に記述します。しておいて、前方宣言だけをヘッダファイルに記述します。struct.hは使いません。私のRPG講座の例もそうなっているはずです。私のRPG講座の例で分からないことがあれば聞いてくださいね。関数のプロトタイプ宣言みたいなものだと解釈してもよろしいですか?>私のRPG講座の例で分からないことがあれば聞いてくださいね優しいお言葉ありがとうございます。理解できるように頑張ります。関数のプロトタイプ宣言みたいなものだと解釈してもよろしいですか?そういう事です。前方宣言はサイズな不明な構造体となるのでポインタでしか扱えないものとなります。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。関数のプロトタイプ宣言みたいなものだと解釈してもよろしいですか?そういう事です。前方宣言はサイズな不明な構造体となるのでポインタでしか扱えないものとなります。6年前ポインタであれば引数にできます。ここが多分初心者には難しいと思います。逆に実体はPlayer.cpp以外で作れないためmainなどで実体宣言は出来なくなります。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。ポインタであれば引数にできます。ここが多分初心者には難しいと思います。逆に実体はPlayer.cpp以外で作れないためmainなどで実体宣言は出来なくなります。6年前staticが必要かどうかはそれだけの情報だと分かりませんが、ポインタ変数であれば不要の可能性が高いです。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。staticが必要かどうかはそれだけの情報だと分かりませんが、ポインタ変数であれば不要の可能性が高いです。ポインタにはstaticは不要ですね。返信ありがとうございます。//設定してあるステータス値を得るたとえばこんなのをmain側でincludeした場合を考えるとわかりやすい.Player_t型の定義や関数群の実装はたとえばPlayer.cppとかにあり,main側からは見えない.main側はPlayer_tがどんな型なのかわからないので,構造体メンバ変数をいじったりできない.ただ,必要な仕事は関数に任せればよいということを知っているだけ.オフトピックNo.74のコード...全部Cで書かなきゃと思ってたのにC++が半端に混じった変な書き方になってしまっていますね......サンプルありがとうございます。);これだとポインタの更新ができないので、失敗します。経験のため一度失敗してみたほうが良いと思います。【補足】失敗して苦労したことは中々忘れないからです。描写関数にはポインタを渡してもいいのでしょうか?それしか無いですね。あとplayer構造体に、後々のため画像ハンドルも含めたほうが良いですね。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。返信ありがとうございます。);これだとポインタの更新ができないので、失敗します。経験のため一度失敗してみたほうが良いと思います。【補足】失敗して苦労したことは中々忘れないからです。描写関数にはポインタを渡してもいいのでしょうか?それしか無いですね。あとplayer構造体に、後々のため画像ハンドルも含めたほうが良いですね。ポインタの更新ですか?調べながらやってみます。描写関数にポインタを渡します。img_hdlという変数を追加します。私としては、このままで失敗してダメな理由を考えて欲しいです。調べるのは失敗して考えたあとでお願いします。出来れば調べない方が良いかもしれません。方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。6年前オブジェクト個別にカプセル化を追求するのは勉強としては良いのかもしれないけれど、最終的にゲームプログラムとしてインターフェースを統一することを考慮しておかなくても良いのでしょうかね。『ゲームの~』というスレタイとの乖離を感じます。返信ありがとうございます。私としては、このままで失敗してダメな理由を考えて欲しいです。調べるのは失敗して考えたあとでお願いします。出来れば調べない方が良いかもしれません。プログラミング力をつけるために考えて見ます。オフトピック思いついたのは・どのアドレスに割り振られるかわからないうちに初期化されるから、かなと思いました。返信ありがとうございます。オブジェクト個別にカプセル化を追求するのは勉強としては良いのかもしれないけれど、最終的にゲームプログラムとしてインターフェースを統一することを考慮しておかなくても良いのでしょうかね。オブジェクト指向になれるためにSTGを作り始めたので全く考慮はして無いです。本格的に作るわけではないので意識するつもりはないと考えました。『ゲームの~』というスレタイとの乖離を感じます。シューティングゲームのオブジェクトは何?から始まってシューティングを作り始めてしまったので今更別トピックにしようと思いました。player部の隠蔽が終われば"オブジェクト指向でのシューティングゲームの作り方"みたいなトピックを立てます。・どのアドレスに割り振られるかわからないうちに初期化されるから、かなと思いました。ヒントは、関数の受け渡し方です。返信ありがとうございます。・どのアドレスに割り振られるかわからないうちに初期化されるから、かなと思いました。ヒントは、関数の受け渡し方です。ヒントありがとうございます。ポインタではなく関数なんですね。