我无法初始化常量字符串的常量数组。
从week.h(仅显示相关部分):
class Week {
private:
static const char *const *days = { "mon", "tue", "wed", "thur",
"fri", "sat", "sun" };
};
当我编译时,我得到错误“标量初始化器中的多余元素”。我试着把它变成const char **,认为我弄乱了第二个const位置,但是我得到了同样的错误。我做错了什么?
答案 0 :(得分:51)
首先,你需要一个数组,而不是一个指针。
static const char * const days[] = {"mon", "tue", "wed", "thur",
"fri", "sat", "sun"};
其次,您不能直接在类定义中初始化它。在类定义中,只留下:
static const char * const days[]; //declaration
然后,在.cpp文件中,编写定义
const char * const Week::days[] = {"mon", "tue", "wed", "thur",
"fri", "sat", "sun"};
C ++ 11更新 现在,您可以直接在类定义中初始化成员:
const char * const days[] = {"mon", "tue", "wed", "thur",
"fri", "sat", "sun"};
答案 1 :(得分:16)
对于 C ++ 11 ,您 可以在 .h 文件。但是,您还需要在 .cpp 文件中包含constexpr。上述案例示例:
在你的week.h文件中,写一下:
class Week {
public:
static const constexpr char* const days[] =
{ "mon", "tue", "wed", "thur","fri", "sat", "sun" };
};
在你的week.cpp文件中,写一下:
constexpr const char* const Week::days[];
确保启用 C ++ 11 ,例如用
编译g ++ -std = c ++ 11 week.cpp