2

C++での優れたデザインについて質問があります。私はを持っていますclass A、そしてこのクラスのすべてのオブジェクトは定数値の整数配列を使用します(それらの値は定数であるため、それらは同じ配列を共有する必要があります)。オブジェクトAの前に、配列を(1回だけ)計算する必要があります。

class B静的メンバーとして整数配列を含む別のものinit()、ある式に従ってこの配列を埋めるメソッド、および静的ブールフラグinitialized(この変数がtrueの場合、init()メソッドは何もしません)を考えましたが、私はそうではありませんこれが私の設計上の問題を解決するための最良の方法であることを確認してください。

だから私の質問は、これを達成するための良いデザイン/方法は何でしょうか?

前もって感謝します。

4

1 に答える 1

2

配列は定数なので、を使用しますconst

配列はクラスのすべてのインスタンス間で共有されるため、を使用しますstatic

ヘッダーファイルで、次のように宣言します。

class A
{
    static const int the_array[10];
}

Aのソースファイルで、1つのインスタンスを初期化します

const int A::the_array[10] = { ... };

コメントから編集...

または、配列がアルゴリズムによってより適切に生成される場合は、定数ポインターを使用します。配列の使用構文は同じです。

配列とポインタの両方がであることに注意してくださいconst

ヘッダ:

class A
{
    static const int * const the_array;
}

ソースファイル:

namespace
{
  const int * generate_my_array()
  {
    // Allocate an array, initialize it, return it.
  }
}

const int * const A::the_array = generate_my_array();
于 2012-09-09T03:37:18.307 に答える