错误:非整数类型'const char []'的静态数据成员的类内初始化无效

时间:2013-11-29 06:51:35

标签: c++

我的私人班级成员遇到了大量错误。请帮我解决这些问题。

错误:在'{'标记

之前,不允许使用括号括起的初始值设定项

错误:非整数类型'const char []'

的静态数据成员的类内初始化无效

错误:'LETTERS_ARR'尚未声明

错误:'LETTERS_ARR'尚未声明

错误:在'+'标记

之前预期','或'...'

错误:ISO C ++禁止成员'SNTNC_SMLRTY_THRSHLD_DEFAULT'的初始化

错误:使'SNTNC_SMLRTY_THRSHLD_DEFAULT'静态**

private:
    std::vector<std::string> files_vec; 
    std::vector<std::string> get_file_sntncs(std::fstream&);
    std::vector<std::string> get_sntnc_wrds(const std::string&);
    double sntnc_smlrty_qtnt(std::vector<std::string>, std::vector<std::string>);
    static const char LETTERS_ARR[] = {"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'."};
    static const std::set<char> LETTERS_SET(LETTERS_ARR, LETTERS_ARR + sizeof(LETTERS_ARR)/sizeof(char));
    double sntnc_smlrty_thrshld; 
    static const double SNTNC_SMLRTY_THRSHLD_DEFAULT = 0.5; 

1 个答案:

答案 0 :(得分:2)

在C ++中,不允许为非整数非枚举类型的静态成员提供类内初始值设定项。对于这些成员,初始化程序是在定义时提供的,而不是在声明时提供的。

或者,正如@juanchopanza在评论中指出的那样,您可以将静态成员声明为constexpr而不是const(假设您使用的是C ++ 11编译器),这将允许您为这些成员提供类内初始化程序,就像在原始代码中一样。