对不起,标题很奇怪,还是不太确定该怎么称呼,这是我的问题:

我收到一条错误消息:


  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/

10-09 04:31