错误:非整型 'const char[]' 的静态数据成员的类内初始化无效
error: invalid in-class initialization of static data member of non-integral type 'const char[]'
我的私有类成员出现了大量错误。请帮我解决这些问题。
错误:在"{"标记之前,此处不允许使用包含大括号的初始值设定项
错误:在非整数类型"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编译器),这将允许您像在原始代码中那样为这些成员提供类内初始值设定项。
相关文章:
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 静态数据成员模板专用化的实例化点在哪里
- 调用在 HXX 文件中声明的静态数据成员
- 虚拟成员函数的定义是否强制在同一转换单元中动态初始化静态数据成员?
- 错误: 无效使用非静态数据成员"应用程序::应用程序构造函数"
- 静态数据成员:它"const declaration / constexpr definition"起作用?
- 何时需要定义类的静态数据成员 (un/-)
- 为什么静态数据成员不能在c++11中的类中初始化
- 静态数据成员的模板专用化
- 拒绝包含某些公共静态数据成员的类型
- GCC:在调试构建中优化的静态数据成员
- 类模板静态数据成员定义/声明/初始化
- C++ 中的静态数据成员
- 如果类在 C++ 中具有常量或引用类型的非静态数据成员,为什么编译器不提供默认赋值运算符?
- 使用 lambda 函数初始化静态数据成员
- 引用静态数据成员
- 学习C++并在早期示例中遇到错误(在非静态数据成员之前需要构造函数)
- Windows 上的 Clang/LLVM 7 和 8 多次初始化内联静态数据成员(使用 link.exe 和 lld-
- 为什么不能使用"( )"为类的非静态数据成员提供默认值?
- 不带初始值设定项的 constexpr 静态数据成员