C++でのクラスの管理について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
顔顔プリン
記事: 10
登録日時: 15年前

C++でのクラスの管理について

#1

投稿記事 by 顔顔プリン » 13年前

Cで書いたコードをC++のクラスを用いたコードに書き換えているのですが、
別々のクラスで、ある一つのクラスを共有して使いたいと思っています。

今通信のプログラムを書いているのですが、
あるクラスでクライアントが接続してきたらクライアントの情報クラスにデータを書き込み
また別のクラスでクライアントの情報クラスを元にメッセージを送信する・受信する
などのようなことを考えています。

Cではクライアントの情報をグローバル変数で宣言したのですが
C++でこのようなときにクライアントの情報クラスはどのように宣言・管理するといいでしょうか?

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: C++でのクラスの管理について

#2

投稿記事 by beatle » 13年前

まず、「クラス」と「インスタンス」という言葉を意識して使い分けて下さい。

恐らく、(これはC言語でもできますが)構造体に関連する変数をまとめ、その構造体のインスタンスへのポインタを、ユーザーとなる2つのクラスのインスタンスが共有するようにすれば、所望の事ができるのではと思います。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C++でのクラスの管理について

#3

投稿記事 by softya(ソフト屋) » 13年前

色んなクラスからアクセスしたいなら情報クラスの単一インスタンスがグローバルでも良い気がします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

顔顔プリン
記事: 10
登録日時: 15年前

Re: C++でのクラスの管理について

#4

投稿記事 by 顔顔プリン » 13年前

返信ありがとうございます。

「クラス」と「インスタンス」、わからず使っていました;
今後気をつけます。
beatle さんが書きました:恐らく、(これはC言語でもできますが)構造体に関連する変数をまとめ、その構造体のインスタンスへのポインタを、ユーザーとなる2つのクラスのインスタンスが共有するようにすれば、所望の事ができるのではと思います。
こちらなんですが、情報クラスのインスタンスの作成とそれを使用するクラスとをまとめるクラスを作成し
複数のクラスのコンストラクタ時に引数としてそのインスタンスへのポインタを渡しなんとか動くようになりました。
ポインタの渡すタイミングなんですがまた別に渡す方法などはありますか?
softya(ソフト屋) さんが書きました:色んなクラスからアクセスしたいなら情報クラスの単一インスタンスがグローバルでも良い気がします。
グローバルの場合は別に共有のヘッダーファイルをつくり、その中にクラスのインスタンスを作成して
複数のクラスがそのヘッダーファイルをincludeして使用する感じになるのでしょうか?
最後に編集したユーザー 顔顔プリン on 2012年3月20日(火) 18:28 [ 編集 1 回目 ]

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C++でのクラスの管理について

#5

投稿記事 by softya(ソフト屋) » 13年前

顔顔プリン さんが書きました:グローバルの場合は別に共有のヘッダーファイルをつくり、その中にクラスのインスタンスを作成して
複数のクラスがそのヘッダーファイルをincludeして使用する感じになるのでしょうか?
グローバル変数と同じです。
どこかのcppでインスタンスを定義して、ヘッダではextern参照します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

顔顔プリン
記事: 10
登録日時: 15年前

Re: C++でのクラスの管理について

#6

投稿記事 by 顔顔プリン » 13年前

softya(ソフト屋) さんが書きました: グローバル変数と同じです。
どこかのcppでインスタンスを定義して、ヘッダではextern参照します。
こちらの方法でもできました。ありがとうございます!

閉鎖

“C言語何でも質問掲示板” へ戻る