Visual C++ で、クラス内の定数配列を初期化するにはどうすればよいですか?
これは、クラスの外でそれを行う方法の例です:
const char k_colors[] =
{
'R',
'G',
'B',
};
今、それをどのように変更する必要がありますか?(静的を前に置いてみましたが、うまくいきませんでした)
編集:そうです、私は単一の文字を使用する必要があります。
Visual C++ で、クラス内の定数配列を初期化するにはどうすればよいですか?
これは、クラスの外でそれを行う方法の例です:
const char k_colors[] =
{
'R',
'G',
'B',
};
今、それをどのように変更する必要がありますか?(静的を前に置いてみましたが、うまくいきませんでした)
編集:そうです、私は単一の文字を使用する必要があります。
その前にスタティックを入れてみましたが、うまくいきませんでした
static
クラス定義内でメンバー配列(または任意のメンバー配列)を初期化することはできません。クラス定義の外でそれを行います:
class X
{
static const char* k_colors[3];
};
const char* X::k_colors[] = { "Red", "Green", "Blue" };
静的にしたい場合は、クラスの外で初期化する必要があります。
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"};
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
ループすることもできます。
constructor initializer
リストから初期化できると思います
ここを参照
またchar
、char*
上記のリンクからの抜粋:
C++11 より前では、配列の各要素をデフォルトで初期化するためにこれを行う必要があります。
: k_colors()
C++11 では、統一された初期化構文を使用することをお勧めします。
: k_colors{ }
そうすれば、以前はできなかったものを実際に配列に入れることができます。
: k_colors{"red","green"}