私の直接的なコンテキストはWindowsプラットフォームですが、別のGUIホストでUIを操作するときにも同じ質問をすることがあります。私はATL/MFCを使わないで、かなり普通のC++ winapiで作業しています。私はグローバルの使用に興味はありませんが、むしろ "アプリケーション"データで "ウィンドウ"関連のタスクを実行するより寛大に受け入れられたプラクティスです。ウィンドウクラスからアプリケーション変数にアクセスするための適切な/受け入れられた設計は何ですか?
私はこれにmvvwまたはmvcスタイルのパターンを実装することを検討しましたが、先に進む前に、無数の経験豊富な開発者やデザイナーが想像しているところからいくつかのコミュニティの意見を聞きたいと思います。
My Applicationクラスには、ウィンドウメンバーがあります。 Windowクラスは、アプリケーション参照で設計する必要がありますか?それとももっと良い方法がありますか?
あなたの 'TThread'クラスへのポインタはスレッドローカルストレージに入ります。クラス 'TThread'はそのデータメンバとして' TApplication'オブジェクトへのポインタを持っています。とにかく、 'TApplication'をグローバルにするのは意味があります。なぜなら、そのコンストラクタは' main'が呼び出される前に初期化を行う場所を提供するからです。 – lapk
私は人々が(理由付きで)グローバル変数を避けるために多くの努力をしていることは知っていますが、時にはそれが現実を最もよく反映する仕組みです。なぜなら、常に「アプリケーション」というインスタンスが1つしか存在しない場合、なぜそれをグローバルにしないのでしょうか? –
またはシングルトン... http://ja.wikipedia.org/wiki/Singleton_patternしかし、私はあなたのケースでは、アプリケーションオブジェクトAFAIUとなるすべての私のウィンドウオブジェクトにモデルへの参照を渡すことを好むでしょう。 –