Почему я получаю строку не называет ошибку типа?
игры.cpp
#include <iostream>
#include <string>
#include <sstream>
#include "game.h"
#include "board.h"
#include "piece.h"
using namespace std;
игры.h
#ifndef GAME_H
#define GAME_H
#include <string>
class Game
{
private:
string white;
string black;
string title;
public:
Game(istream&, ostream&);
void display(colour, short);
};
#endif
ошибка:
game.h:8 error: 'string' does not name a typegame.h:9 error: 'string' does not name a type
4 ответа:
код
usingдекларацииgame.cpp, а неgame.hгде вы фактически объявляете строковые переменные. Вы намеревались поставитьusing namespace std;в заголовок, над строками, которые используютstring, что позволит этим строкам найтиstringтип определен вstdпространство имен.как другие указали, это не рекомендуется в заголовках -- каждый, кто включает этот заголовок, также непроизвольно ударит
usingлинии и импортstdв их пространство имен; правильное решение-изменить эти строки, чтобы использоватьstd::stringвместо
stringНе имя типа. Класс вstringзаголовок называетсяstd::string.пожалуйста не поставить
using namespace stdв файле заголовка, загрязняют глобальное пространство имен для всех пользователей этого заголовка. Смотрите также "почему" использование пространства имен std; " считается плохой практикой в C++?"ваш класс должен выглядеть так:
#include <string> class Game { private: std::string white; std::string black; std::string title; public: Game(std::istream&, std::ostream&); void display(colour, short); };