在Visual C ++中,如何初始化类中的常量数组?
这是一个如何在课外进行的例子:
const char k_colors[] =
{
'R',
'G',
'B',
};
现在我该如何改变呢? (我尝试在它前面放置静电,这不起作用)
编辑:你是对的,我应该只使用单个字符。
答案 0 :(得分:3)
我尝试将静态放在它前面,但是没有工作
您无法在类定义中初始化static
成员数组(或任何成员数组)。在类定义之外做它:
class X
{
static const char* k_colors[3];
};
const char* X::k_colors[] = { "Red", "Green", "Blue" };
答案 1 :(得分: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"};
答案 2 :(得分: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
循环。
答案 3 :(得分:0)
我认为您可以通过constructor initializer
列表
参考here
char
也应为char*
从以上链接中摘录:
在C ++ 11之前,您需要这样做以默认初始化数组的每个元素:
: k_colors()
使用C ++ 11时,建议使用统一初始化语法:
: k_colors{ }
通过这种方式,您可以将事物放入数组中,而不是之前:
: k_colors{"red","green"}