2011-06-18 9 views
1

ゲームや一般的にはC++のメッセージシステムの観点から、これら3つのうちどれが優れていますか?列挙型が最高だと感じますが、それは新しいクラスが本当に貢献できないことを意味すると思います。文字列はスクリプトの利点にとってはいいようですが、私はオーバーヘッドが心配です。整数は少しCishを感じることを定義します。メッセージシステムでenum、string、または#defineを使用する必要がありますか?

ありがとう

+4

もっと...特定できますか? 「メッセージシステム」とはどういう意味ですか?プレーヤー間でメッセージをやりとりする方法は?スレッド間?コンピュータ間? – Nemo

+0

@ニモ私は、WM_KEY_DOWNのように、それらを定義する方法を尋ねています – jmasterx

+3

そして、私はあなたが "メッセージシステム"の意味を聞いています。どのようなメッセージですか?どのような種類のエンティティの間?あなたの質問は、現在意味がないほど曖昧です。あなたの特定のアプリケーションをもっと詳しく説明する必要があります。 – Nemo

答えて

2

すべては、何をしようとしているのか、どのような種類のデータ(可変長対固定長)、メッセージングの頻度、メッセージのサイズなどに依存します。低レベルメッセージをパッケージ化するにはstructunionを使用してください。

これ以上の情報がない限り、の右の方法はありません。

3

Messageクラスを作成しないでください。これには、メッセージを識別するための文字列、整数IDなどが含まれる可能性があります。これにより、両方のシステムの中で最良の結果が得られます。さまざまな種類のメッセージにサブクラスを設定することもできます。

+0

はい - 私は構造体/共用体を使用しようとするたびに、デバッグ目的のためにメッセージをテキスト化するためだけに、メソッドが必要であることがわかりました。メッセージを識別する列挙型メンバは、それらをテクスチャ化するためのconst文字列の配列とともに私にとっては問題ありませんが、開発中に新しいメッセージが定義されると最新の状態に保つのは少し苦労します。 –

0

ナショナルインスツルメンツのライブラリおよび多くのボードレベルのインターフェイスプログラムでは、#defineを業界標準のエラーに使用しています。

0

C++の場合、単純定数の場合は#defineから離れてください。名前空間ではうまくいきません。代わりに、enumまたは適切な名前空間の変数constを使用します。いずれも型保証され、適切にスコープされています。

#defineにはいくつかのことがありますが、別の方法がある場合は避けてください。

関連する問題