错误 C2061:语法错误:标识符“地图”
Posted
技术标签:
【中文标题】错误 C2061:语法错误:标识符“地图”【英文标题】:error C2061: syntax error : identifier 'map' 【发布时间】:2016-03-16 12:44:53 【问题描述】:我快疯了。我只有一个标头和 cpp,它没有编译:
.h 如下:
#pragma once
#include <string>
#include <map>
#include <windows.h>
class Activate
public:
Activate();
~Activate();
int accion(map<string, string>& mapa);
;
和cpp这个:
#include "Activate.h"
using namespace std;
Activate::Activate()
Activate::~Activate()
int Activate::accion(map<string, string>& mapa)
我得到了上面提到的错误:
1>c:\users\dani.roca\desktop\autocad 文件\mfc dll\project1\project1\activate.h(19):错误 C2061:语法错误: 标识符“地图” 1>c:\users\dani.roca\desktop\autocad files\mfc dll\project1\project1\activate.cpp(13): 错误 C2511: 'int Activate::accion(std::map<_kty> &)' : 重载成员函数 在“激活”中找不到
#include "Activate.h"
using namespace std;
Activate::Activate()
Activate::~Activate()
int Activate::accion(std::map<string, string>& mapa)
还有这个
class Activate
public:
Activate();
~Activate();
int accion(std::map<std::string, std::string>& mapa);
;
然后出现新的错误:
1>LINK : 致命错误 LNK1561: 必须定义入口点
【问题讨论】:
main() 在哪里?没有 main() 就无法编译。 main() 就是生命。 @PiotrSkotnicki 我为什么要这样做?我已经在使用命名空间 std “使用命名空间标准”should be avoided。令人遗憾的是,有多少没有受过教育的教师正在向他们的学生教授这种糟糕的编程实践。 【参考方案1】:将int accion(map<string, string>& mapa);
替换为
int accion(std::map<std::string, std::string>& mapa);
// ^^^^^ ^^^^^ ^^^^^
包含标题时,using namespace std
尚未生效。
您也可以在班级中添加using std::map;
和using std::string;
。
class Activate
public:
Activate();
~Activate();
using std::map;
using std::string;
int accion(map<string, string>& mapa);
;
【讨论】:
那么你应该说using namespace std;
,然后包含标题。顺便说一句,在生产代码中永远不要说using namespace std;
。
或在头文件中。
改变了这个:class Activate public: Activate(); 〜激活(); int accion(std::map<:string std::string>& mapa); ; #include "Activate.h" 使用命名空间标准; Activate::Activate() Activate::~Activate() int Activate::accion(std::mapmain
函数。
@MohitJain with main new error: 1> LINK : C:\Users\dani.roca\Desktop\autocad Files\MFC DLL\Project1\x64\Debug\Activacion.exe 未找到或未构建通过最后一个增量链接;执行完整链接以上是关于错误 C2061:语法错误:标识符“地图”的主要内容,如果未能解决你的问题,请参考以下文章
C2061:语法错误:qtypetraits.h 中的标识符“L”
error C2061: 语法错误: 标识符“openmode”
使用Opencv2遇到error C2061: 语法错误: 标识符dest
error C2061: 语法错误 : 标识符 "newvalue1"
调用opencv时,使用Egien工具出现“error C2061: 语法错误: 标识符“Matrix””和“error C2653: “Eigen”:不是类或命名空间名称”该如何解决?