当我编译以下文件时,我收到了错误:
ECArgs.h:36:3: error: ‘string’ does not name a type
ECArgs.h:36:ECString值(char c);
有人可以给我任何关于错误的提示吗?
ECArgs.h
#include <list>
#include "ECString.h"
class ECArgs
{
public:
ECArgs(int argc, char *argv[]);
int nargs() { return nargs_; }
bool isset(char c);
ECString value(char c);
ECString arg(int n) { return argList[n]; }
private:
int nargs_;
int nopts_;
ECString argList[32];
list<ECString> optList;
};
ECString.h
#define ECS gnu
#if ECS == gnu
#include <cstring>
#define ECString string
using namespace std;
#else
#include <bstring.h>
#define ECString string
#endif
答案 0 :(得分:4)
我遇到了类似的错误。这是因为我遗漏了using namespace std;
答案 1 :(得分:2)
您需要添加:
#include <string>
cstring包括操作C风格字符串的函数。这个版本有效:
#include <list>
#include <string>
#if ECS == gnu
#include <cstring>
#define ECString string
using namespace std;
#else
#include <bstring.h>
#define ECString string
#endif
class ECArgs
{
public:
ECArgs(int argc, char *argv[]);
int nargs() { return nargs_; }
bool isset(char c);
ECString value(char c);
ECString arg(int n) { return argList[n]; }
private:
int nargs_;
int nopts_;
ECString argList[32];
list<ECString> optList;
};
int main()
{
}