2016-06-27 4 views
-1

これは簡単な問題のようですが、解決策が何であるか理解できません。私はオブジェクトが基本的にxとyの座標、フォントの色などのスクリーンクラスを持っています。すべてはうまくいきます、私はこれらのオブジェクトをインスタンス化して使用することができます。インスタンシエートされたオブジェクト変数の可視性

場合によっては、画面に書き込まれている文字列の色を変更する必要があります。これは、いったんやった "システムコール"のほうが、それ以降に書かれたすべての文字列を設定するものです。だから私は画面に書き込むたびに、私は最初に "テキストの色を設定する"ことを余儀なくされています。それとも私ですか?私はメソッドを持っていますsetValue: objA->setValue("1234", RED);

メソッドがこの呼び出しを取得すると、画面の色を設定します。 objAが赤色に設定するとしましょう。別のオブジェクトが画面に書き込む必要があり、同じ色だとすると、画面に書き込む回数を減らすために、画面に書き込むことは望ましくありません。だから、最後のオブジェクトの色に基づいて、私は画面のテキストの色を更新したい(またはしない) Cでは、これはもちろん最も悪い静的なグローバルになります。どうすればC++で同様のことができますか?

おかげで...

+0

こんにちは、ありがとう! "setValue"は、特定のグラフィックオブジェクトを設定するか、テキストをx、yの位置に設定することができるオーバーロードされた関数です。クラス静的変数のあなたの提案は、完全にうまく動作します。再度、感謝します! – user10326

+0

実際、私は動的に(FreeRTOSのmemモデル2を使用して)メモリを割り当てることができないので、オブジェクトを作成するために "new"を使用しています。変数をプライベートとして宣言し、それを設定/テストするとうまくいきます。 – user10326

+0

ようこそスタックオーバーフロー!あなたの質問を編集して、インラインコードサンプルを適切にレンダリングできるようにフォーマットしました。フォーマットの詳細については、編集ヘルプを参照してください。特定の問題を特定するために必要な詳細を追加するには、編集してください。がんばろう! – Wtower

答えて

0

私はここのために行っているものを完全にはわからない:IE、あなたが使用しているオブジェクトが画面テキストのビットを表すことを意図している場合画面内で私は後者を仮定します。

カラー値を指定しない後続の呼び出しのために、色値をリスから外したいと思うように思えます。おそらく、クラスの静的メンバーを調べるべきです。最も単純なケースでは、単に "カラー"タイプのプライベート静的クラスメンバーを持ち、 "setValue()"関数でその変数を単に更新するだけです。あなたの質問を正しく読んでいるならば、 "setValue"は本当に "テキストを書く"のようなものでなければならないかもしれませんが、私は誤解しているかもしれません。あなたのクラスをpublic staticメンバ関数に変換します。正しさのものではなく、明快なものです。)

+0

「静的」がまったく必要ないかどうかわかりません。 –

+0

ええ、それは、呼び出しが画面ごとまたは画面内のオブジェクトごとに異なるかどうかによって異なります。スクリーンごとに1つ以上のオブジェクトが存在する場合、静的は必要になります。なぜなら、それは共有されるからです。これが単なる「スクリーン」オブジェクトの場合、色は普通の古いメンバーになります。 –

関連する問題