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中进行编译,它在save.cpp的第6行上给了我这个错误,尽管如此,我已经检查了它,但是我对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','\0'}; // ugly :(
附带说明:您使用std::string
,但忘记了在<string>
哪里std::string
定义。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句