如何修复用作初始值设定项错误的数组?
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 中删除了竞争,但这不会影响错误。
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 中编译,它在 save.cpp 的第 6 行给了我这个错误,不过,我已经检查过了,但我是 c++ 的新手,不太了解当然,这根本不是初始化程序。
好像是常量成员的非静态数据成员初始化导致的编译器bug 我要对整个可用class.
在-class初始化:
const char ccHelp[5] = "help";
仅自 C++11 起合法。
错误信息令人困惑。它指向构造函数(实际上甚至没有初始化列表),即使真正的罪魁祸首是这一行(以及它后面的类似行):
const char ccHelp[5] = "help";
GCC manual says that the feature is supported since 4.7, but 4.9 apparently fails to compile your program. That appears to be a compiler bug. Remember that C++11 support was experimental until GCC 5.1. Here is your program reproducing the compiler bug in 4.9 and here 你的程序在 5.1 中编译得很好。
因此,您的选择是 1) 升级您的编译器或 2) 使用更丑陋的初始化形式,这似乎在 4.9 中有效:
const char ccHelp[5] = {'h','e','l','p','[=11=]'}; // ugly :(
作为旁注:您使用 std::string
,但您忘记包含 <string>
,其中定义了 std::string
。
save.cpp
#include "save.h"
#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
Save::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 中编译,它在 save.cpp 的第 6 行给了我这个错误,不过,我已经检查过了,但我是 c++ 的新手,不太了解当然,这根本不是初始化程序。
好像是常量成员的非静态数据成员初始化导致的编译器bug 我要对整个可用class.
在-class初始化:
const char ccHelp[5] = "help";
仅自 C++11 起合法。
错误信息令人困惑。它指向构造函数(实际上甚至没有初始化列表),即使真正的罪魁祸首是这一行(以及它后面的类似行):
const char ccHelp[5] = "help";
GCC manual says that the feature is supported since 4.7, but 4.9 apparently fails to compile your program. That appears to be a compiler bug. Remember that C++11 support was experimental until GCC 5.1. Here is your program reproducing the compiler bug in 4.9 and here 你的程序在 5.1 中编译得很好。
因此,您的选择是 1) 升级您的编译器或 2) 使用更丑陋的初始化形式,这似乎在 4.9 中有效:
const char ccHelp[5] = {'h','e','l','p','[=11=]'}; // ugly :(
作为旁注:您使用 std::string
,但您忘记包含 <string>
,其中定义了 std::string
。