質問: C ++でクラスの静的配列メンバーを初期化するより良い方法です(ただし、constは望ましいでしょう) 私はクラスのメンバとして関数へのポインタの静的な配列を持っています。 私はそれを初期化する必要がありますが、この配列は64Kの項目が長いので、 `{x、y、z、...}` のような静的初期化子で初期化するのは実用的ではありませんコード。 私は代わりにいくつかのループで、コードで初期化する必要があります。 これを行う方法は、コンストラクタの `static` 配列を初期化してフラグを設定することです。したがって、クラスの最初のインスタンスの構築だけがこの初期化を起動します。 また、インスタンス内からこの静的フラグにアクセスすることはスレッドセーフではありませんが、それは別の話です。 これを行うためのよりクリーンな方法がありますか? この配列を `const` にしたいと思っていますが、これを行う唯一の方法は `static {}` の初期化です
回答: きれいなコードではないかもしれませんが、メンバー配列を静的な参照にする方法はありますか? ヘッダファイル: ``` class MyClass { ... static const std::vector& pointer_vector; }; ``` 実装ファイル: ``` namespace { typedef std::vector t_pointer_vector; t_pointer_vector pointer_vector; const t_pointer_vector& initialize_pointer_vector(void) { //generate pointer_vector return pointer_vector; } } t_pointer_vecotor& MyClass::pointer_vector = initialize_pointer_vector(); ``` `std :: vector` が必要ない場合は、 `std :: tr1 :: array` Cスタイルの配列よりも効率的ではありません(Boostの文書によると)。それはTR1の一部です。 TR1に関する基本情報は、ウィキペディア、そのドキュメントをご覧ください。