2013-02-20 11 views
5

このアプリケーションでは、以下のような一般的なクラス(プロジェクト構成パラメータを保持するクラスなど)があります。プロジェクト全体からの汎用クラスへのアクセス

class DB{ 
public: 
int projectVersion 
int somethingSoMuchImportantAllOverTheProject 
}; 
extern DB* pDB; 

他のすべてのクラスはこのクラスを使用するため、すべての人が何らかの方法でこのクラスにアクセスする必要があります。私たちのソリューションは、 "extern DB * pDB;"そのヘッダーファイルの下でそれを必要とする人は、ヘッダーを含めた後でそれにアクセスできます。私はもっ​​と良い解決策があり、この一般的なケースのためにあなたのアイデアを得たいと思うかもしれないと思っています。

+1

ポインタである必要がありますか? –

+4

私は 'c'タグを削除しました。これは明らかにC++です。 – unwind

+1

あなたが話しているのは、シンプルなグローバル変数です(あるフォームで別のフォームに)。ですから、より良い選択肢を提案するには、シンタックスだけでなく設計上の考慮事項として全体像を見る必要があります。 – KBart

答えて

1

シングルトンです。あなたはそれについて多くの議論を見つけることができますが、重要なことの1つは、クラスのユーザーが1つのオブジェクトを使用するようにクラスのコンストラクタを非表示にすることです。

+0

シングルトンのパターンは良い改善になるでしょうが、私はまたこのオブジェクトを他のクラスとリンクさせる方法についても尋ねています。 –

+0

"リンク"とは何を意味するのか分かりません...ビルドプロセスのリンク部分を意味するものではありません。コード内で直接使用するだけです(例: 'pDB-> projectVersion'でバージョンを確認してください。 – mark

+0

シングルトンはオブジェクトを1つだけインスタンス化することでオブジェクトを単一にすることを知っているので、これを述べました。しかし、私は "extern DB * pDB;"のようなヘッダーにオブジェクトポインタを置いているのではないかと思います。この例では、 –

関連する問題