C++ 错误:应为‘’;或‘’;在‘之前&燃气轮机’;代币

C++ 错误:应为‘’;或‘’;在‘之前&燃气轮机’;代币,c++,map,header,compiler-errors,C++,Map,Header,Compiler Errors,我知道有10亿个类似的话题,但我在其中看到的任何一个建议都没有帮助我解决这个问题。。。这在另存为header.h的文件中 #include <errno.h> #include <stdio.h> #include <string.h> #include <sys/types.h> #include <sys/socket.h> #include <map> using namespace std; class Handl

我知道有10亿个类似的话题,但我在其中看到的任何一个建议都没有帮助我解决这个问题。。。这在另存为header.h的文件中

#include <errno.h>
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <map>

using namespace std;
class Handler {
public:
    Handler();
    ~Handler();

    bool handle(int client);
    void giveMaps(map<string, string> host, map<string,string> media>);

private:
    map<string, string> hosts;
    map<string, string> mediaLookup;
    char buf_[1600];
    char* getCurrentDate();

};
#包括
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
类处理程序{
公众:
Handler();
~Handler();
bool句柄(int客户端);
创建地图(地图主机、地图媒体>);
私人:
地图主机;
地图媒体查找;
char buf_[1600];
char*getCurrentDate();
};
我的错误是“handler.h:18:error:expected'”或“>”标记之前的“…”,其中原始代码中的第18行是“void giveMaps(地图主机,地图媒体>)


我已经尝试将两个映射声明为const,以及映射中的所有字符串,但到目前为止我什么都没有。我肯定这是件简单的事情,我只需要另一双眼睛就可以看到它…

这本书的结尾有一个额外的

void giveMaps(map<string, string> host, map<string,string> media>);
创建地图(地图主机、地图媒体>);

在结尾处有一个额外的

void giveMaps(map<string, string> host, map<string,string> media>);
创建地图(地图主机、地图媒体>);

还有一个额外的
。请删除(其在声明中位于
media
之后的最后三个):

更新的声明应如下所示:

void giveMaps(map<string, string> host, map<string,string> media);
maps(地图主机、地图媒体);

还有一个额外的
。请删除(其在声明中位于
media
之后的最后三个):

更新的声明应如下所示:

void giveMaps(map<string, string> host, map<string,string> media);
maps(地图主机、地图媒体);

以及给出的其他建议,以下是不正确的:

#include <string.h>

与给出的其他建议一样,以下建议也不正确:

#include <string.h>

media
之后还有什么额外的功能呢?在头文件中添加“using namespace std;”是一种非常非常糟糕的做法,它会让任何不得不使用头文件的人永远诅咒你。如果您想在.cpp文件中使用它,尽管这也不是一个很好的实践,但请继续。另一方面,将它放在头文件中,意味着包括头文件在内的任何人都将把std名称空间中的所有内容都带到全局名称空间中,无论他们是否想要(而且他们可能没有)。另外,如果要将处理程序用作基类,请确保析构函数是虚拟的。在
media
之后还有什么额外的吗?将“using namespace std;”放在头文件中是一种非常非常糟糕的做法,这会让任何不得不使用头文件的人永远诅咒你。如果您想在.cpp文件中使用它,尽管这也不是一个很好的实践,但请继续。另一方面,将它放在头文件中,意味着包括头文件在内的任何人都将把std名称空间中的所有内容都带到全局名称空间中,无论他们是否想要(而且他们可能没有)。另外,如果要将处理程序用作基类,请确保析构函数是虚拟的。我知道这很简单,谢谢!(现在问这个问题觉得很愚蠢,但哦,好吧,这就是生活…)这很好。有时候你需要另一双眼睛来看待琐碎的事情。请不要忘记接受答案。我知道答案很简单,谢谢!(现在问这个问题觉得很愚蠢,但哦,好吧,这就是生活…)这很好。有时候你需要另一双眼睛来看待琐碎的事情。请不要忘记接受答案。虽然他肯定应该包括字符串,字符串。h < /C>是字符串操作的C头,C++等价的是 cString 。String .h应该包含在C++中,作为这个选项,这个答案帮助我调试了我看到的下一个问题。我希望有一种方法可以接受多个答案(或者至少我有投票的声誉!)关于
cstring
的好评论,尽管我看不出有必要将其包括在OPs示例中,因为它不包含此处声明的任何功能。虽然他当然应该包括
string
,<代码>字符串。h < /C>是字符串操作的C头,C++等价的是 cString 。String .h应该包含在C++中,作为包含的,这个答案帮助我调试了我看到的下一个问题。我希望有一种方法可以接受多个答案(或者至少我有投票的声誉!)关于
cstring
的好评论,尽管我看不出有必要将其包括在OPs示例中,因为它没有涵盖此处声明的需求的任何功能。