Почему я получаю эту ошибку ifstream? - PullRequest
33 голосов
/ 25 января 2012

Implicit instantiation of undefined template '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.tcc и basic_ios.tcc:

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

И поскольку это часть библиотеки fstream, очевидно, что я делаю что-то неправильно ...

Кто-нибудь может помочь?

1 Ответ

80 голосов
/ 25 января 2012

Вам не хватает

#include <fstream>

и вы, вероятно, назначаете что-то на inFile, что недопустимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...