c++ - 如何修复用作初始值设定项错误的数组?

标签 c++ error-handling g++ g++4.9

保存.cpp

#include "save.h"
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
Save::Save()
{
}

我已经对所有函数进行了注释,并从 Save::Save 中删除了 content,但这并不影响错误。
保存.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 中编译,它在 save.cpp 的第 6 行给了我这个错误,不过,我已经检查过了,但我是 c++ 的新手,不太确定,这是'根本不是初始化器。
这似乎是一个编译器错误,由我希望对整个类可用的常量成员的非静态数据成员初始化引起。

最佳答案

错误信息令人困惑。它指向构造函数(实际上它甚至没有初始化列表),即使真正的罪魁祸首是这一行(以及它后面的类似行):

const char ccHelp[5] = "help";

海湾合作委员会 manual说该功能自 4.7 起就受支持,但 4.9 显然无法编译您的程序。这似乎是一个编译器错误。请记住,在 GCC 5.1 之前,C++11 支持是实验性的。 Here您的程序是否重现了 4.9 和 here 中的编译器错误?您的程序在 5.1 中编译正常吗?

因此,您的选择是 1) 升级您的编译器或 2) 使用更丑陋的初始化形式,这似乎在 4.9 中有效:

const char ccHelp[5] = {'h','e','l','p','\0'}; // ugly :(

作为旁注:您使用 std::string , 但你忘了包括 <string>其中 std::string已定义。

关于c++ - 如何修复用作初始值设定项错误的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35413821/

相关文章:

c++ - 自定义内存管理器在 Release模式下工作正常,但在 Debug模式下不行

c++ - 为什么 C2662 错误不适用于对 std::unique_ptr<B> 对象的常量引用?

c++ - 编译器错误 `assigning incompatible type within if statement`

c++ - 如何将箭头::数组转换为标准:: vector ?

php - 为什么数组变成文本 “Array”而不是变量?

c++ - 由于 c++11 错误无法构建 GCC

python - Python字典对对象方法的理解

authentication - 在中心位置或组件中捕获错误

c++ - 在 Linux 上使用 g++ 输出错误,在 Windows 上更正

c++ - 优化 c++/gcc 中的模板编译时间