在头文件中使用未声明的标识符(Clang)

时间:2014-11-10 02:37:13

标签: c++ function shared-libraries clang header-files

我正在创建一个函数来读取位于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;
}

使用头文件IO.h:

#ifndef IO_H
#define IO_H


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

#endif // IO_H

但我从Clang那里得到一个错误

  

include / IO.h | 9 |错误:使用未声明的标识符&#39; std&#39; |

我无法弄清楚如何解决它。

2 个答案:

答案 0 :(得分:21)

在解析标头(特别是void readFile(std::string inputFile);行)时,编译器不知道存在std命名空间,更不用说string存在于该命名空间内。

标题中

#include <string>

答案 1 :(得分:-1)

在许多情况下,当您忘记在单独文件的方法实现中包含 #include <iostream> 时会发生这种情况,即在 main 函数之外(即当您转到头文件路由时)