私は、これらの関数によって後で処理されるかもしれないデータを生成するいくつかのC++関数を書いていますが、他の場所では処理されません。これらの機能は、いくつかのより高いレベルのGUI変更のための「低レベル」です。クラス外のデータをカプセル化する
私は現在、別々の名前空間にこれらの関数をラップしており、静的な(内部的にリンクされた)ベクトルを宣言しています(オブジェクトは構造体として定義され、名前空間にも含まれています)。このように、一般的な構造:
namespace Foo
{
struct Bar
{
string data;
};
void func1();
void func2();
static std::vector<Bar> cachedBars;
}
私は本当にこのためのクラスを必要としない、とシングルトンに頼ることに興味はないですか。この解決策は十分ですか?具体的には、ネームスペーススコープコレクションを内部的にリンクして、そのコレクションへのアクセスを制限する最良の方法と、グローバル変数の落とし穴をすべて回避するか、より良い方法がありますか?
グローバルな落とし穴を避けているわけではありません。 –
これはヘッダファイルですか?その場合は、ファイルをインクルードするすべての場所にcachedBarsのコピーが作成されます。 –
@Cat:私はそれが少なくとも世界的であることを望んでいました。 –