#include (ing) файлы, имя переменной с ошибкой типа C ++ - PullRequest
1 голос
/ 15 апреля 2011

Извините за странный заголовок, не совсем уверен, как его назвать, так или иначе, вот мой вопрос:

У меня появляется сообщение об ошибке:

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

Где *Класс 1015 * определен в отдельном файле как

template <typename K, typename V>
class myHashMap {
    //
};
#include "hashmap.hpp"

Файл заголовка для этого класса включен в pserver.h.

Так почему компилятор не распознает myHashMap<string, int> кактип?

Ответы [ 2 ]

0 голосов
/ 15 апреля 2011

Компилятор явно не знает, что такое myHashMap.Вы либо забыли включить объявление myHashMap в pserver.h (даже если вы заявляете, что включили его), либо ваши заголовочные файлы страдают от проблемы циклического включения.Кроме того, может ли быть так, что myHashMap объявлен членом некоторого пространства имен?

Не похоже, что проблема связана с std::string, в отличие от того, что предлагали другие авторы.Хотя может быть проблема с std::string, указанные вами сообщения об ошибках вызваны тем, что компилятор не видит объявление myHashMap.

0 голосов
/ 15 апреля 2011

Вы либо:

  • Забыл #include <string>
  • Необходимо использовать std::string вместо string
  • Требуется объявление использования для std::string
  • Нужна директива using для namespace std
  • Не правильно 1018 * включить заголовок, содержащий ваш шаблон myHashMap, в pserver.h

Или какая-то комбинация вышеперечисленного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...