对不起,标题很奇怪,还是不太确定该怎么称呼,这是我的问题:
我收到一条错误消息:
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
};
myHashMap<K, V>
类在单独的文件中定义为template <typename K, typename V>
class myHashMap {
//
};
#include "hashmap.hpp"
此类的头文件包含在pserver.h中。
那么,编译器为什么不将
myHashMap<string, int>
识别为类型? 最佳答案
编译器显然不知道myHashMap
是什么。您或者忘记了将myHashMap
的声明包含在pserver.h
中(即使您声称确实包含了该声明),或者您的头文件遇到了循环包含问题。另外,是否可以将myHashMap
声明为某些命名空间的成员?
看起来问题与std::string
没有任何关系,与其他张贴者所建议的相反。尽管可能存在std::string
问题,但您引用的错误消息是由编译器未看到myHashMap
声明引起的。
关于c++ - #include(ing)文件,带变量名,现在输入错误C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5670993/