为什么会出现ifstream错误?

55

未定义模板'std::basic_ifstream<char,std::char_traits<char>>'的隐式实例化

#ifndef MAPPER_H
#define MAPPER_H
#include <iostream>
#include <string>
#include <vector>
#include "KeyValue.h"
#include "Parser.h"

using namespace std;
class Mapper
{
public:
    Mapper(ifstream& infile);
    ~Mapper(void);
    void loadTokens();
    void showTokens();
    void map();
    void printMap();
    void printMap(string map_fileName);
private:
    ifstream inFile;  //<-- is where the error is happening
    vector<string> tokens;
    vector<KeyValue> map_output;
    Parser* parser;
};

#endif

我甚至试过使用 std::ifstream,但仍然无法正常工作。

当我改用 #include <fstream> 而不是 #include <iostream> 时,在 fstream.tccbasic_ios.tcc 中出现以下错误:

'operator=' is a private member of 'std::basic_streambuf<char>'

由于这是 fstream 库的一部分,显然我做错了什么...

有人能帮忙吗?


1
你应该使用<fstream>而不是<iostream>operator=才是真正的错误。输出窗口应该显示完整的错误信息,包括你复制Mapper对象的行号。 - Mooing Duck
你需要展示导致第二个错误的代码。 - R. Martinho Fernandes
1个回答

143

你遗漏了

#include <fstream>

你可能会把一些不允许的东西赋值给inFile


由于某些原因,我的问题中省略了我已经导入fstream的部分。 - OghmaOsiris
你可以进行编辑。同时,提供一个最小的示例以供他人尝试编译会很有帮助。 - Mika Fischer
7
在我受伤之前,我认为<iostream>中包含了ifstream - acgtyrant

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接