web-dev-qa-db-fra.com

Utilisation d'un identifiant non déclaré dans le fichier d'en-tête (Clang)

Je crée une fonction pour lire le contenu d'un fichier, situé dans un fichier IO.cpp:

#include "IO.h"
#include <iostream>
#include <fstream>
IO::IO()
{
    //ctor
}

void IO::readFile(std::string fileName)
{
    std::ofstream inputFile;
    inputFile.open(FileName);
    inputFile >> fileName.toStdString;
    inputFile.close();
    std::cout << fileName;
}

Avec le fichier d'en-tête IO.h:

#ifndef IO_H
#define IO_H


class IO
{
    public:
        IO();
        void readFile(std::string inputFile);
    protected:
    private:
};

#endif // IO_H

Mais je reçois une erreur de Clang qui dit

include/IO.h | 9 | erreur: utilisation de l'identifiant non déclaré 'std' |

Et je ne sais pas comment le résoudre.

13
Axmill

Lors de l'analyse de l'en-tête (en particulier la ligne void readFile(std::string inputFile);), le compilateur ne sait pas qu'un espace de noms std existe, et encore moins string existe à l'intérieur de cet espace de noms.

#include <string> dans l'en-tête.

23
Luchian Grigore