在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