错误C2061:语法错误:标识符' map'

时间:2016-03-16 12:44:53

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

我变得疯了。我只有一个标题和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&gt; c:\ users \ dani.roca \ desktop \ autocad files \ mfc   dll \ project1 \ project1 \ activate.h(19):错误C2061:语法错误:   标识符&#39; map&#39;
1&gt; c:\ users \ dani.roca \ desktop \ autocad files \ mfc   dll \ project1 \ project1 \ activate.cpp(13):错误C2511:&#39; int   激活:: accion(std :: map&lt; _Kty,_Ty&gt;&amp;)&#39; :重载的成员函数   未在&#39;激活&#39;

中找到
#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&gt; LINK:致命错误LNK1561:必须定义入口点

1 个答案:

答案 0 :(得分:3)

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);
};