2013-05-07 97 views
0

我无法将元素初始化为我的类中的整数数组。代码被裁剪为简洁:打开大括号会导致语法错误

class Update 
{ 
private: 
static const int MONTHS_IN_YEAR = 12; // months in a year 
static const int dayCounts [MONTHS_IN_YEAR] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 
}; 

出于某种原因,在我的课这样做会导致一个语法错误,但这样做在里面没有问题的重要手段的结果。所以我不知道为什么它会给我一个错误。提前感谢您的帮助。

+0

你使用什么编译器? – 2013-05-07 03:18:26

+0

@JesseGood一秒 – user1800967 2013-05-07 03:19:43

+0

将其更改为constexpr。 – 2013-05-07 03:19:51

回答

2

你需要constexpr对于工作:

static constexpr int dayCounts [MONTHS_IN_YEAR] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 

然而,你的编译器(视觉C++)不支持这个呢。因此,你将不得不在类之外初始化它:

const int Update::dayCounts [MONTHS_IN_YEAR] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; 
+0

添加它给了我更多的错误 – user1800967 2013-05-07 03:24:45

+0

@ user1800967:Visual C++不支持C++ 11类内初始化。你将不得不像在我的例子中那样初始化类之外的静态成员。 – 2013-05-07 03:28:12

+0

工作正常!非常感谢杰西!谢谢大家! – user1800967 2013-05-07 03:30:09