Почему я получаю строку не называет ошибку типа?
игры.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 type
game.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); };