在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})
{ }
};
或者可以使用静态常量阵列
在头文件:
class A {
static const int a[2];
// other bits follow
};
在源文件(或从上面的声明单独的地方)
const int A::a[] = { 1, 2 };
当然您也可以始终使用std::vector<int>
和for
循环。
难道你不是指'const char *'和'“Red”'等等吗? –
那么,根本不起作用,因为你使用多个字符文字,它应该只有一个字符。你的意思是'char *'和例如' “红”'? –
您的编译器是否支持C++ 11功能? – hmjd