これが構文指向の質問であると仮定すると、次のようになります。
class Data_Class {
public:
static int a;
static int GetA() const { return a; }
}
でClassA
:
Data_Class::a;
Data_Class::GetA();
たとえば、Data_Class
静的メンバー定義を次のように追加することを忘れないでくださいdataclass.cpp
。
static int Data_Class::a = 0;
そうしないと、undefined reference
リンカーエラーが発生します。
新しい静的メンバー定義の追加を処理するAubinが提案したように、シングルトンパターンの使用を検討することもできます(コメントによると、シングルトンは悪い考えであり、可能であれば避ける必要があります) 。
class Data_Class {
private:
Data_Class(); // Prevents multiple instances
int a;
int b;
public:
// Will initialize instance if needed
static Data_Class &GetInstance(){
static Data_Class instance;
return instance;
}
int GetA() const {return a;}
};
使用法:
Data_Class::GetInstance().GetA()
または、ウィキによると、もう少し複雑ですが、より柔軟な依存性注入を使用します。
依存性注入は、コンパイル時ではなく実行時にコンポーネントを選択できるようにするソフトウェアデザインパターンです。これは、たとえば、プラグインを動的にロードしたり、テスト環境でモックオブジェクトを選択したり、本番環境で実際のオブジェクトを選択したりするための簡単な方法として使用できます。このソフトウェアデザインパターンは、宛先の要件を知ることにより、依存要素(オブジェクトや値など)を宛先に自動的に挿入します。