C言語を使用してます。
グローバル構造体が便利で多用してしまっているので、オブジェクト指向に基づいてstaticな構造体に変えたいと思ってます。
そこで質問なのですが
A というファイル
B というファイルがある時
A で内部構造体として宣言している構造体αのメンバー変数をBで参照したくなった場合
Bでαと同じ要素を持つ構造体βを宣言しておき、参照したい地点より前で β = α でβに構造体の内容を移して置き、βでメンバー変数を参照する。
という方法で良いのでしょうか?
オブジェクト指向とグローバル構造体について
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: オブジェクト指向とグローバル構造体について
それはオブジェクト指向と言うよりも構造化設計のモジュール化だと思います。
>A で内部構造体として宣言している構造体αのメンバー変数をBで参照したくなった場合
>Bでαと同じ要素を持つ構造体βを宣言しておき、参照したい地点より前で β = α でβに構造体の内容を移して置き、βでメンバー変数を参照する。
それは良くないので、Aモジュールにメンバー変数値を返す関数を追加してください。
Bモジュールは、構造体αの構造を知ってはいけません。
>A で内部構造体として宣言している構造体αのメンバー変数をBで参照したくなった場合
>Bでαと同じ要素を持つ構造体βを宣言しておき、参照したい地点より前で β = α でβに構造体の内容を移して置き、βでメンバー変数を参照する。
それは良くないので、Aモジュールにメンバー変数値を返す関数を追加してください。
Bモジュールは、構造体αの構造を知ってはいけません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
-
ハタ
Re: オブジェクト指向とグローバル構造体について
>>ソフト屋さん
ご回答有難う御座います。
例えば知りたいメンバー変数が5つあった場合は、5つ分それぞれの値を返す関数を用意すれば宜しいでしょうか?
またAファイルの構造体αのメンバー変数値を他のファイルで変化させるのはご法度ですよね?
仮にそうしたくなった場合でもどうにかAファイル内で変更を行えるように組めば良いのでしょうか。
(ポインタなどを使えば他のファイルからでも変更出来ますが、これだと駄目だと思います。
ただそうなってくるとだいぶプログラムを組むのが大変になるなぁという気がしまして・・・。)
ご回答有難う御座います。
例えば知りたいメンバー変数が5つあった場合は、5つ分それぞれの値を返す関数を用意すれば宜しいでしょうか?
またAファイルの構造体αのメンバー変数値を他のファイルで変化させるのはご法度ですよね?
仮にそうしたくなった場合でもどうにかAファイル内で変更を行えるように組めば良いのでしょうか。
(ポインタなどを使えば他のファイルからでも変更出来ますが、これだと駄目だと思います。
ただそうなってくるとだいぶプログラムを組むのが大変になるなぁという気がしまして・・・。)
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: オブジェクト指向とグローバル構造体について
ファイル内の変数をそれぞれ参照したり変化させる関数が必要かという問題は、外部に変数をそれほど晒す必要があるのかと言う問題と直結します。
つまり、Aモジュール(ファイル)内で処理すれば良い処理を他のモジュール(ファイル)で処理していませんか? って事です。
と言うことでやたら参照と更新関数が増えるならモジュール(ファイル)分けの基準自体を見なおしてください。
つまり、Aモジュール(ファイル)内で処理すれば良い処理を他のモジュール(ファイル)で処理していませんか? って事です。
と言うことでやたら参照と更新関数が増えるならモジュール(ファイル)分けの基準自体を見なおしてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。