ページ 11

オブジェクト指向とグローバル構造体について

Posted: 2013年4月11日(木) 00:08
by ハタ
C言語を使用してます。
グローバル構造体が便利で多用してしまっているので、オブジェクト指向に基づいてstaticな構造体に変えたいと思ってます。
そこで質問なのですが
A というファイル
B というファイルがある時

A で内部構造体として宣言している構造体αのメンバー変数をBで参照したくなった場合

Bでαと同じ要素を持つ構造体βを宣言しておき、参照したい地点より前で β = α でβに構造体の内容を移して置き、βでメンバー変数を参照する。

という方法で良いのでしょうか?

Re: オブジェクト指向とグローバル構造体について

Posted: 2013年4月11日(木) 00:34
by softya(ソフト屋)
それはオブジェクト指向と言うよりも構造化設計のモジュール化だと思います。

>A で内部構造体として宣言している構造体αのメンバー変数をBで参照したくなった場合
>Bでαと同じ要素を持つ構造体βを宣言しておき、参照したい地点より前で β = α でβに構造体の内容を移して置き、βでメンバー変数を参照する。

それは良くないので、Aモジュールにメンバー変数値を返す関数を追加してください。
Bモジュールは、構造体αの構造を知ってはいけません。

Re: オブジェクト指向とグローバル構造体について

Posted: 2013年4月11日(木) 11:21
by ハタ
>>ソフト屋さん
ご回答有難う御座います。

例えば知りたいメンバー変数が5つあった場合は、5つ分それぞれの値を返す関数を用意すれば宜しいでしょうか?

またAファイルの構造体αのメンバー変数値を他のファイルで変化させるのはご法度ですよね?
仮にそうしたくなった場合でもどうにかAファイル内で変更を行えるように組めば良いのでしょうか。
(ポインタなどを使えば他のファイルからでも変更出来ますが、これだと駄目だと思います。
ただそうなってくるとだいぶプログラムを組むのが大変になるなぁという気がしまして・・・。)

Re: オブジェクト指向とグローバル構造体について

Posted: 2013年4月11日(木) 17:00
by softya(ソフト屋)
ファイル内の変数をそれぞれ参照したり変化させる関数が必要かという問題は、外部に変数をそれほど晒す必要があるのかと言う問題と直結します。
つまり、Aモジュール(ファイル)内で処理すれば良い処理を他のモジュール(ファイル)で処理していませんか? って事です。
と言うことでやたら参照と更新関数が増えるならモジュール(ファイル)分けの基準自体を見なおしてください。

Re: オブジェクト指向とグローバル構造体について

Posted: 2013年4月13日(土) 00:26
by ハタ
おっしゃる通りでモジュール分けの基準をもっと厳しく設けてみる事にします。
ご返答有難う御座いました。