如何修复此用作初始值设定项错误的数组
How to fix this array used as initializer error?
save.cpp
#include "save.h"
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
Save::Save()
{
}
我已经注释了所有函数并从 Save::Save 中删除了争辩,但它不会影响错误。
保存.h
#ifndef SAVE_H
#define SAVE_H
#include <iostream>
#include <string.h>
#include <fstream>
using namespace std;
class Save
{
public:
Save();
void vDisplay();
char cDecode();
bool bFileExists(const string& crsFileName);
const char ccTab = 9;
const char ccHelp[5] = "help";
const char ccNo[3] = "no";
const char ccStart[6] = "start";
const char ccQuit[5] = "quit";
const char ccYes[4] = "yes";
};
#endif // SAVE_H
我使用 g++ 4.9 并在 C++11 中编译,它在保存的第 6 行给了我这个错误.cpp,虽然,我已经检查过了,但我是 c++ 的新手,不太确定,这根本不是初始值设定项。
这似乎是由常量成员的非静态数据成员初始化引起的编译器错误,我希望整个类都可用。
错误消息令人困惑。它指向构造函数(实际上甚至没有初始值设定项列表(,即使真正的罪魁祸首是这一行(以及它后面的类似行(:
const char ccHelp[5] = "help";
GCC 手册说从 4.7 开始支持该功能,但 4.9 显然无法编译您的程序。这似乎是一个编译器错误。请记住,在GCC 5.1之前,C++11支持是实验性的。这是您的程序在 4.9 中重现编译器错误,这是您的程序在 5.1 中编译良好。
因此,您的选择是 1( 升级编译器或 2( 使用更丑陋的初始化形式,这似乎在 4.9 中有效:
const char ccHelp[5] = {'h','e','l','p',' '}; // ugly :(
作为旁注:您使用 std::string
,但您忘记在定义std::string
的位置包含<string>
。
类内初始化:
const char ccHelp[5] = "help";
自 C++11 以来才合法。
相关文章:
- "错误:数组下标的无效类型'float [10001][float]'是什么意思?
- 错误:数组下标的类型"const bool[int]"无效
- Qt并发错误:数组初始化需要大括号括起来的初始值设定项列表
- 使用GCC 4.8构建错误:数组用作初始化器
- 如何修复问题中的"teminated due to timeout"错误 数组操作 |黑客兰克?
- | 9 |错误:非静态数据成员'matrix :: row'| 9 |错误:数组绑定不是在']']'令牌|之前的整数常数
- 错误:数组的总大小不得超过0x7fffffff字节
- 错误:无法将参数“1”的“double*”转换为“double”,错误:数组下标的类型“double[double]”无
- 返回并强制转换数组指针(错误:数组下标的类型..无效)
- 返回c++中的字符错误数组
- VC++错误:数组实例化的大小来自模板化的静态常量
- c++mex错误:数组下标的类型“double[mwSize]”无效
- 错误数组用作初始值设定项,我不知道错误
- 编译错误 - 数组下标'char[int]'的类型无效
- 向量在我的类中.错误:数组new [-fpermissive]中的圆括号初始化项
- 错误:数组下标的类型无效
- 错误:数组new中的size必须是整型[-fpermissive]
- 错误:数组下标的“Pixel*[__complex__ int]”类型无效
- c++错误数组显示
- C++:错误:数组下标的类型“size_t{aka long unsigned int}[size_t{aka long