¿Por qué estoy recibiendo string no nombra un error de tipo?
Juego.cpp
#include <iostream>
#include <string>
#include <sstream>
#include "game.h"
#include "board.h"
#include "piece.h"
using namespace std;
Juego.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
El error es:
game.h:8 error: 'string' does not name a type
game.h:9 error: 'string' does not name a type
4 answers
Su declaración using
está en game.cpp
, no game.h
donde realmente declara variables de cadena. Pretendió poner using namespace std;
en el encabezado, por encima de las líneas que usan string
, lo que permitiría que esas líneas encontraran el tipo string
definido en el espacio de nombres std
.
Como otros han señalado , esto es no es una buena práctica en los encabezados everyone todos los que incluyen ese encabezado también golpearán involuntariamente la línea using
e importarán std
en su espacio de nombres; la solución correcta es para cambiar esas líneas para usar std::string
en su lugar
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:18:33
string
no nombra un tipo. La clase en el encabezado string
se llama std::string
.
Please do not put using namespace std
in a header file, it pollutes the global namespace for all users of that header. Véase también "¿Por qué 'usar el espacio de nombres std;' se considera una mala práctica en C++?"
Su clase debería tener este aspecto:
#include <string>
class Game
{
private:
std::string white;
std::string black;
std::string title;
public:
Game(std::istream&, std::ostream&);
void display(colour, short);
};
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:33:13
Simplemente use el calificador std::
delante de string
en sus archivos de encabezado.
De hecho, debe usarlo para istream
y ostream
también, y luego necesitará #include <iostream>
en la parte superior de su archivo de encabezado para que sea más autónomo.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-04-03 07:36:25
Intente un using namespace std;
en la parte superior de game.h
o use el std::string
completamente calificado en lugar de string
.
El namespace
en game.cpp
está después de que se incluya el encabezado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-20 22:13:58