【问题标题】:error C2061: syntax error : identifier 'map'错误 C2061:语法错误:标识符“地图”
【发布时间】: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。令人遗憾的是,有多少没有受过教育的教师正在向他们的学生教授这种糟糕的编程实践。

标签: c++ dictionary visual-studio-2013


【解决方案1】:

int accion(map&lt;string, string&gt;&amp; 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::map& mapa){ } 和新错误:1>LINK:致命错误 LNK1561:条目必须定义点
  • 你需要一个main 函数。
  • @MohitJain with main new error: 1> LINK : C:\Users\dani.roca\Desktop\autocad Files\MFC DLL\Project1\x64\Debug\Activacion.exe 未找到或未构建通过最后一个增量链接;执行完整链接
猜你喜欢
  • 1970-01-01
  • 2011-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多