ページ 1 / 1
C++でのクラスの管理について
Posted: 2012年3月20日(火) 14:16
by 顔顔プリン
Cで書いたコードをC++のクラスを用いたコードに書き換えているのですが、
別々のクラスで、ある一つのクラスを共有して使いたいと思っています。
今通信のプログラムを書いているのですが、
あるクラスでクライアントが接続してきたらクライアントの情報クラスにデータを書き込み
また別のクラスでクライアントの情報クラスを元にメッセージを送信する・受信する
などのようなことを考えています。
Cではクライアントの情報をグローバル変数で宣言したのですが
C++でこのようなときにクライアントの情報クラスはどのように宣言・管理するといいでしょうか?
Re: C++でのクラスの管理について
Posted: 2012年3月20日(火) 14:20
by beatle
まず、「クラス」と「インスタンス」という言葉を意識して使い分けて下さい。
恐らく、(これはC言語でもできますが)構造体に関連する変数をまとめ、その構造体のインスタンスへのポインタを、ユーザーとなる2つのクラスのインスタンスが共有するようにすれば、所望の事ができるのではと思います。
Re: C++でのクラスの管理について
Posted: 2012年3月20日(火) 16:38
by softya(ソフト屋)
色んなクラスからアクセスしたいなら情報クラスの単一インスタンスがグローバルでも良い気がします。
Re: C++でのクラスの管理について
Posted: 2012年3月20日(火) 18:23
by 顔顔プリン
返信ありがとうございます。
「クラス」と「インスタンス」、わからず使っていました;
今後気をつけます。
beatle さんが書きました:恐らく、(これはC言語でもできますが)構造体に関連する変数をまとめ、その構造体のインスタンスへのポインタを、ユーザーとなる2つのクラスのインスタンスが共有するようにすれば、所望の事ができるのではと思います。
こちらなんですが、情報クラスのインスタンスの作成とそれを使用するクラスとをまとめるクラスを作成し
複数のクラスのコンストラクタ時に引数としてそのインスタンスへのポインタを渡しなんとか動くようになりました。
ポインタの渡すタイミングなんですがまた別に渡す方法などはありますか?
softya(ソフト屋) さんが書きました:色んなクラスからアクセスしたいなら情報クラスの単一インスタンスがグローバルでも良い気がします。
グローバルの場合は別に共有のヘッダーファイルをつくり、その中にクラスのインスタンスを作成して
複数のクラスがそのヘッダーファイルをincludeして使用する感じになるのでしょうか?
Re: C++でのクラスの管理について
Posted: 2012年3月20日(火) 18:27
by softya(ソフト屋)
顔顔プリン さんが書きました:グローバルの場合は別に共有のヘッダーファイルをつくり、その中にクラスのインスタンスを作成して
複数のクラスがそのヘッダーファイルをincludeして使用する感じになるのでしょうか?
グローバル変数と同じです。
どこかのcppでインスタンスを定義して、ヘッダではextern参照します。
Re: C++でのクラスの管理について
Posted: 2012年3月21日(水) 01:34
by 顔顔プリン
softya(ソフト屋) さんが書きました:
グローバル変数と同じです。
どこかのcppでインスタンスを定義して、ヘッダではextern参照します。
こちらの方法でもできました。ありがとうございます!