Cで書いたコードをC++のクラスを用いたコードに書き換えているのですが、
別々のクラスで、ある一つのクラスを共有して使いたいと思っています。
今通信のプログラムを書いているのですが、
あるクラスでクライアントが接続してきたらクライアントの情報クラスにデータを書き込み
また別のクラスでクライアントの情報クラスを元にメッセージを送信する・受信する
などのようなことを考えています。
Cではクライアントの情報をグローバル変数で宣言したのですが
C++でこのようなときにクライアントの情報クラスはどのように宣言・管理するといいでしょうか?
C++でのクラスの管理について
Re: C++でのクラスの管理について
まず、「クラス」と「インスタンス」という言葉を意識して使い分けて下さい。
恐らく、(これはC言語でもできますが)構造体に関連する変数をまとめ、その構造体のインスタンスへのポインタを、ユーザーとなる2つのクラスのインスタンスが共有するようにすれば、所望の事ができるのではと思います。
恐らく、(これはC言語でもできますが)構造体に関連する変数をまとめ、その構造体のインスタンスへのポインタを、ユーザーとなる2つのクラスのインスタンスが共有するようにすれば、所望の事ができるのではと思います。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++でのクラスの管理について
色んなクラスからアクセスしたいなら情報クラスの単一インスタンスがグローバルでも良い気がします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: C++でのクラスの管理について
返信ありがとうございます。
「クラス」と「インスタンス」、わからず使っていました;
今後気をつけます。
複数のクラスのコンストラクタ時に引数としてそのインスタンスへのポインタを渡しなんとか動くようになりました。
ポインタの渡すタイミングなんですがまた別に渡す方法などはありますか?
複数のクラスがそのヘッダーファイルをincludeして使用する感じになるのでしょうか?
「クラス」と「インスタンス」、わからず使っていました;
今後気をつけます。
こちらなんですが、情報クラスのインスタンスの作成とそれを使用するクラスとをまとめるクラスを作成しbeatle さんが書きました:恐らく、(これはC言語でもできますが)構造体に関連する変数をまとめ、その構造体のインスタンスへのポインタを、ユーザーとなる2つのクラスのインスタンスが共有するようにすれば、所望の事ができるのではと思います。
複数のクラスのコンストラクタ時に引数としてそのインスタンスへのポインタを渡しなんとか動くようになりました。
ポインタの渡すタイミングなんですがまた別に渡す方法などはありますか?
グローバルの場合は別に共有のヘッダーファイルをつくり、その中にクラスのインスタンスを作成してsoftya(ソフト屋) さんが書きました:色んなクラスからアクセスしたいなら情報クラスの単一インスタンスがグローバルでも良い気がします。
複数のクラスがそのヘッダーファイルをincludeして使用する感じになるのでしょうか?
最後に編集したユーザー 顔顔プリン on 2012年3月20日(火) 18:28 [ 編集 1 回目 ]
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: C++でのクラスの管理について
グローバル変数と同じです。顔顔プリン さんが書きました:グローバルの場合は別に共有のヘッダーファイルをつくり、その中にクラスのインスタンスを作成して
複数のクラスがそのヘッダーファイルをincludeして使用する感じになるのでしょうか?
どこかのcppでインスタンスを定義して、ヘッダではextern参照します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: C++でのクラスの管理について
こちらの方法でもできました。ありがとうございます!softya(ソフト屋) さんが書きました: グローバル変数と同じです。
どこかのcppでインスタンスを定義して、ヘッダではextern参照します。