現在C++ builder(cpp builder 2009を使用)でプログラミングをしています。
ネット接続で端末に接続して、TCPコネクションができたら端末の動作環境の設定値をアップロードできるようにしています。端末の動作環境のデータはenv_tという構造体にしてアップロード時にはこのenv_tの構造体一括で入れて、それをPCの現在作成しているViewerに持ってきています。
その際にある型式の端末では、そのenv_tに追加のデータ分(30byte程度)を追加したものなので、この端末と接続した場合はenv02_tという構造体に切り替えてデータをアップロードしています。
通常はm_pEnv = (env_t *)new env_t;
このように宣言してm_pEnvの構造体にデータを入れてアップロードしていますが、
特定の型式の端末に接続を検知した場合は、
delete m_pEnv;
m_pEnv = (env_t *)new env02_t;
このように変更しています。
このときに問題になっているのが、TCPでのデータがアップロード完了した際に必ずViewer内のデータ表示をアップデートするため次のファンクションを通過します。
void TfrmMain::UpdateEnv(env_t * env)
{
--------(中略)-------------------------
}
このファンクションでは引数がenv_tで固定されてしまっているので、ファンクション内部でenv02_tで追加になったデータ分の扱いができない状況です。
void TfrmMain::UpdateEnv02(env02_t * env)
{
--------(中略)-------------------------
}
このように別途、特定の型式の場合は別のファンクションを作成した方が良いのか困っています。例えば引数をenv_t、env02_tで選べるようにするようなコードの方法などありますでしょうか?
どうぞ、ご教示頂きますようお願い致します。
No.1ベストアンサー
- 回答日時:
関数のオーバーロードは使えませんか?
回答頂きありがとうございます。
Viewer側で
env_t *m_pEnv;
このように宣言していたポインターは
env_02_t *m_pEnv;
これで統一することにしました。
心配していた”env_t *m_pEnv;”これで動作している旧タイプの端末への設定データのアップロード、ダウンロードは設定が消えてしまうというような現象は起きていないことを確認しました。
とりあえずこの設定で使用してみたいと思います。
助かります。
No.2
- 回答日時:
オブジェクト指向を活用するなら
UpdateEnvは、t_env, t_env2のvirtualなメソッドとして定義して
m_pEnv->UpdateEnv();
みたいにする。
回答頂きありがとうございます。
Viewer側で
env_t *m_pEnv;
このように宣言していたポインターは
env_02_t *m_pEnv;
これで統一することにしました。
心配していた”env_t *m_pEnv;”これで動作している旧タイプの端末への設定データのアップロード、ダウンロードは設定が消えてしまうというような現象は起きていないことを確認しました。
とりあえずこの設定で使用してみたいと思います。
助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つほどお聞きしたいことがあり...
-
C言語初心者 ポインタについて...
-
10進数からN進数に変換するプロ...
-
Notepad++の関数リスト表示の変...
-
c言語でイベントフラグを使った...
-
[C言語]fputsとfprintfの違い
-
Notepad++の関数リスト表示でC...
-
Bitcoin、BTCはブロックチェー...
-
c言語
-
どなたかこのプログラミングを...
-
VisualStudio2022でC言語プログ...
-
0 == False はいいけど
-
QT(C++)の学習方法について
-
【C言語】全角文字の配列を、全...
-
どうして+3
-
プログラミング言語についてc++...
-
バッチファイルで以下のような...
-
応用情報技術者試験の令和元年...
-
次の記述について
-
UART通信の取説で,left floati...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
linux上でgetchを使いたい
-
エクセルVBAでのネットワークプ...
-
[C#]リモートアクセスのProcess...
-
閲覧したスクロール位置に戻る...
-
VSSにてrights.datアクセス拒否...
-
VBScrptについて
-
VB .NETで作成したソフトが、他...
-
C#で作成したDLLをExcelVBAで利...
-
JavaScriptでキオスクモードを...
-
プログラミング
-
docomoメール内でURLリンク
-
C++で引数の型の構造体をif文で...
-
親スレッドが子スレッドを監視...
-
クライアントPC情報の取得方法。
-
エラー'429'ACtiveXコンポーネ...
-
会員制動画配信サイトを作りた...
-
【PHP】UUID・UDIDによる端末判...
-
iHTMLとCHTMLの違いを教えてく...
-
android開発初心者です。 2つの...
-
携帯電話の種別判定??
おすすめ情報