0

Visual C++ で、クラス内の定数配列を初期化するにはどうすればよいですか?

これは、クラスの外でそれを行う方法の例です:

const char k_colors[] = 
{ 
    'R', 
    'G', 
    'B',
};

今、それをどのように変更する必要がありますか?(静的を前に置いてみましたが、うまくいきませんでした)

編集:そうです、私は単一の文字を使用する必要があります。

4

4 に答える 4

3

その前にスタティックを入れてみましたが、うまくいきませんでした

staticクラス定義内でメンバー配列(または任意のメンバー配列)を初期化することはできません。クラス定義の外でそれを行います:

class X
{
    static const char* k_colors[3];
};

const char* X::k_colors[] = { "Red", "Green", "Blue" };
于 2012-10-05T07:39:57.550 に答える
3

静的にしたい場合は、クラスの外で初期化する必要があります。

class foo
{
public:
    static const char k_colors[3];
    foo() { }

};

const char foo::k_colors[] = {'a', 'b', 'c'};

また、const char *[]文字列を初期化しようとしているように見えるので、おそらく次のようにしたいでしょう。

const char *foo::k_colors[] = {"Red", "Green", "Blue"};
于 2012-10-05T07:41:47.933 に答える
1

C ++ 11では、前述のようにコンストラクタ初期化子リストを使用できます

class A {
    const int arr[2];

    // constructor
    A() 
    : arr ({1, 2}) 
    { }
};

または、静的const配列を使用できます

ヘッダーファイル:

class A {
    static const int a[2];
    // other bits follow
};

ソースファイル内(または上記の宣言とは別の場所)

const int A::a[] = { 1, 2 }; 

もちろん、いつでも使用std::vector<int>してforループすることもできます。

于 2012-10-05T07:47:28.713 に答える
0

constructor initializerリストから初期化できると思います

ここを参照

またcharchar*

上記のリンクからの抜粋:

C++11 より前では、配列の各要素をデフォルトで初期化するためにこれを行う必要があります。

: k_colors()

C++11 では、統一された初期化構文を使用することをお勧めします。

: k_colors{ }

そうすれば、以前はできなかったものを実際に配列に入れることができます。

: k_colors{"red","green"}
于 2012-10-05T07:34:09.923 に答える