ページ 11

ファイル分割と構造体

Posted: 2017年9月18日(月) 02:42
by あらい16
タイトルの内容の質問です。
現在短めのRPGを作成しています。主人公のパラメータなどを構造体で管理しようと考えているため、ファイルを分割したときに、複数のソースファイルから一つの構造体でやり取りできるようにしたいと考えているのですがどうにもうまくいきません。
そこで、皆様の知恵をお借りしたいです。皆様はどういった方法でデータを扱っているのでしょうか?
また、複数のソースファイルから同一の構造体にアクセスすることは可能でしょうか?

Re: ファイル分割と構造体

Posted: 2017年9月18日(月) 03:40
by box
あらい16 さんが書きました: ファイルを分割したときに、複数のソースファイルから一つの構造体でやり取りできるようにしたいと考えているのですがどうにもうまくいきません。
何をしたときにどううまくいかないのかが全くわかりませんので、お答えのしようがありません。
せめて、ソースコードやエラーメッセージを開示してはいただけないでしょうか。

Re: ファイル分割と構造体

Posted: 2017年9月18日(月) 12:17
by あらい16
[quote="box" id=3,19572,147846
何をしたときにどううまくいかないのかが全くわかりませんので、お答えのしようがありません。[/quote]

そうでした、申し訳ありません。
<saveData.h> → 引数の構造体にdatファイルから読み込んだデータを代入する関数宣言
<saveData.cpp> → 上記の関数定義
<main.cpp> → saveData.hをinclude、構造体を定義、上記の関数呼び出し

としています。が、saveDataの.h .cppともに構造体が定義されていませんとエラーが出ます。
この場合は構造体を定義するファイルを作り、全ソースファイルでincludeしたほうがいいのでしょうか?

Re: ファイル分割と構造体

Posted: 2017年9月18日(月) 14:45
by にこよん
構造体を<saveData.h>で定義し、<saveData.cpp>とmainの両方でincludeすればいいのでは?

Re: ファイル分割と構造体

Posted: 2017年9月18日(月) 16:29
by usao
構造体の用途次第でしょうけど,DataのSaveにだけ使うので無いならば,その構造体をsaveData.hで定義するのは違う感.

「その構造体の定義が書かれたヘッダ」を用意し,それをmainとsaveData.cppの双方でincludeする.
(saveData.hではinclude不要,もしくは前方宣言で済むように思う.)

Re: ファイル分割と構造体

Posted: 2017年9月18日(月) 17:07
by あらい16
usao さんが書きました: 「その構造体の定義が書かれたヘッダ」を用意し,それをmainとsaveData.cppの双方でincludeする.
(saveData.hではinclude不要,もしくは前方宣言で済むように思う.)
すいません、ここに来てincludeの質問なのですが、インクルードガードを書いた場合二度目のincludeはスキップされますよね?
そこで、上記のように2つのソースファイルでincludeした場合の処理はどうなるのでしょうか?スキップされないのですか?

Re: ファイル分割と構造体

Posted: 2017年9月18日(月) 17:35
by にこよん
あらい16 さんが書きました: すいません、ここに来てincludeの質問なのですが、インクルードガードを書いた場合二度目のincludeはスキップされますよね?
そこで、上記のように2つのソースファイルでincludeした場合の処理はどうなるのでしょうか?スキップされないのですか?
「同じ」ソースファイルでは2回読み込まれないだけなので2つの(別の)ソースファイルであればいくらでもincludeできます。

Re: ファイル分割と構造体

Posted: 2017年9月18日(月) 22:19
by あらい16
にこよん さんが書きました: 「同じ」ソースファイルでは2回読み込まれないだけなので2つの(別の)ソースファイルであればいくらでもincludeできます。
なるほど、そういう処理を行ってたのですね。
どうやら意味を履き違えていたみたいです。助言を参考にひとまずは組んでみます。