问题描述
|
对不起,标题很奇怪,还是不太确定该怎么称呼,这是我的问题:
我收到一条错误消息:
pserver.h:27:错误:ISO C ++禁止无类型的\'
myHashMap
\'声明
pserver.h:27:错误:在\'<
\'令牌之前应为\';
\'
在pserver.h中引用此行:
template <typename K,typename V>
class myPserver {
public:
//
private:
myHashMap<string,int> theMap; // line 27
};
在单独的文件中将“ 4”类定义为
template <typename K,typename V>
class myHashMap {
//
};
#include \"hashmap.hpp\"
此类的头文件包含在pserver.h中。
那么,为什么编译器不会将ѭ6识别为类型呢?
解决方法
显然,编译器不知道什么是“ 0”。您或者忘记了将“ 0”声明包含到“ 9”中(即使您声称确实包含了),或者您的头文件遇到了循环包含问题。另外,是否可以将“ 0”声明为某个命名空间的成员?
看起来问题与ѭ11无关,这与其他张贴者的建议相反。尽管
std::string
可能存在问题,但您引用的错误消息是由编译器未看到myHashMap
的声明引起的。
,您要么:
忘了#include <string>
需要使用std::string
而不是string
需要ѭ11的使用声明
需要a18的using指令
没有将包含您的“ 0”模板的标头正确地包含到pserver.h中
或以上的某种组合。