Ошибка C2061: синтаксическая ошибка: идентификатор «istream»

Когда я создаю свою программу и оставляю свою функцию getTokens в заголовочном файле, я получаю сообщение об ошибке, но когда я вынимаю ее, она строится нормально. Я пытаюсь сделать объявление для функции с именем getToken() в заголовке.

Это ошибка, которую я получаю.

tokens.h(26): ошибка C2061: синтаксическая ошибка: идентификатор «istream»

#include "stdafx.h"
#include <iostream>
#include <istream>
#include <ostream>
#include <fstream>
#include <string>


class Tokens
{
public:
   enum TokenType {

   TEXT,
   LANGLE,
   RANGLE,
   SLASH,
   ID,
   EQ,
   QSTRING,
   OTHER,
   END,

   };

   TokenType getToken(istream*br, string&lexeme);

};

person John    schedule 23.10.2014    source источник
comment
Отсутствует std::. Голосование за закрытие как «опечатка».   -  person Rapptz    schedule 23.10.2014
comment
@PaulGriffiths @Rapptz; Спасибо!   -  person John    schedule 23.10.2014


Ответы (1)


istream и строка находятся в пространстве имен std. Вам нужно указать тип с пространством имен std.

TokenType getToken(std::istream*br, std::string&lexeme);

Также, вероятно, было бы лучше использовать ссылку на br, а не указатель с точки зрения отображения намерения.

TokenType getToken(std::istream &br, std::string &lexeme);

Как примечание, вам не понадобятся все эти включения. ‹ istream> и ‹ ostream> включены как часть ‹ iostream>

person BlamKiwi    schedule 23.10.2014
comment
Спасибо, я пытался понять, что поставить перед ::. Также я планирую использовать цикл while(br-›good()) для чтения файла, так что можно ли вместо этого использовать ссылку? - person John; 23.10.2014
comment
Если это решило вашу проблему, не забудьте принять ответ. :П - person BlamKiwi; 23.10.2014
comment
Извините, прервали на мгновение. - person John; 23.10.2014
comment
Думайте о ссылках как о передаче фактического объекта в функцию. Вместо -› вы бы использовали . Я бы пошел сюда, если вам нужна дополнительная информация cprogramming.com/tutorial/references.html - person BlamKiwi; 23.10.2014