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

error: invalid in-class initialization of static data member of non-integral type 'const char[]'

本文关键字:数据成员 静态 无效 初始化 char 整型 const 错误      更新时间:2023-10-16

我的私有类成员出现了大量错误。请帮我解决这些问题。

错误:在"{"标记之前,此处不允许使用包含大括号的初始值设定项

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

错误:"LETTERS_ARR"尚未声明为

错误:"LETTERS_ARR"尚未声明为

错误:应为","或"…"在"+"标记之前

错误:ISO C++禁止初始化成员"SNTNC_SMLRTY_THRHLD_DEFAULT"

错误:使"SNTNC_SMLRTY_THRHLD_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; 

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

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