1

私のプロジェクトには、1 つの基本クラスと 3 つの異なる派生クラスがあります。基本クラスに const int として記述されたマクロ変数がいくつかあります。すべての派生メンバーはこれらのメンバーにアクセスし、同じ値を参照します。これは const であり、変更されることはないため、3 つの異なる値を維持することはスペースの無駄になります。したがって、すべての派生クラスが同じものを使用するように、基本クラスの const メンバーのコピーを 1 つだけ維持する方法が必要です。

 //Base.hpp
 Class Base {

       const int ZER0;
       const int ONE;
 };

 //Derived1.hpp
 class Derived1:public Base {
      int some_method1(); 
 };

  //Derived1.cpp

  int Derived1::some_method1() {

    int value = ZERO;
  }

 //Derived2.hpp

 class Derived2:public Base {
    int some_method2();
 };

//Derived2.cpp

int Derived2::some_method2() {
   int value = ONE;
}

//main.cpp

Derived1 d1;
d1->some_method1();

Derived d2;
d2->some_method2();

//ここでは、両方のメソッドで値は一定ですが、それでも ZERO と ONE は異なるスペースを持つことになります。コピーを 1 つだけ維持する方法はありますか? 静的変数を考えることができました。クラス内で static を使用しても大丈夫ですか? static 変数をどこで初期化しますか? ご意見をお聞かせください。

PS: この質問は重複している可能性がありますが、似たような言葉が見つからない場合は、対応する記事/質問にリダイレクトしてください。

4

2 に答える 2

3

私があなたを正しく理解しているなら、列挙型はあなたが探していることをしますか?

class Base
{
    enum 
    {
        ZERO,
        ONE
    };
};
于 2012-04-07T15:42:58.987 に答える