#include <iostream>
#include <string>
#include <sstream>
#include "game.h"
#include "board.h"
#include "piece.h"
using namespace std;
#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
L'erreur est:
game.h:8 error: 'string' does not name a type
game.h:9 error: 'string' does not name a type
Votre déclaration using
est dans game.cpp
, ne pas game.h
où vous déclarez réellement des variables de chaîne. Vous aviez l'intention de mettre using namespace std;
dans l'en-tête, au-dessus des lignes utilisant string
, ce qui permettrait à ces lignes de trouver le type string
défini dans l'espace de noms std
.
Comme d'autres l'ont déjà souligné , c'est ce n'est pas une bonne pratique dans les en-têtes - tous ceux qui incluent cet en-tête vont aussi involontairement cliquer sur la ligne using
et importer std
dans leur espace de noms; la bonne solution est de changer ces lignes pour utiliser std::string
au lieu
string
ne nomme pas un type. La classe dans l'en-tête string
s'appelle std::string
.
S'il vous plaît ne pas mettre using namespace std
dans un fichier d'en-tête, il pollue l'espace de noms global pour tous les utilisateurs de cet en-tête. Voir aussi "Pourquoi" utiliser l'espace de noms std; "est-il considéré comme une mauvaise pratique en C++?"
Votre classe devrait ressembler à ceci:
#include <string>
class Game
{
private:
std::string white;
std::string black;
std::string title;
public:
Game(std::istream&, std::ostream&);
void display(colour, short);
};
Il suffit d'utiliser le std::
qualificatif devant string
dans vos fichiers d’en-tête.
En fait, vous devriez l’utiliser pour istream
et ostream
également - et vous aurez alors besoin de #include <iostream>
en haut de votre fichier d’en-tête pour le rendre plus autonome.
Essayez un using namespace std;
Au sommet de game.h
_ ou utilisez le _ pleinement qualifié std::string
au lieu de string
.
Le namespace
dans game.cpp
est après que l'en-tête est inclus.