2012-01-25 3 views
24

Implicit instantiation of undefined template 'std::basic_ifstream<char,std::char_traits<char>>'Почему я получаю эту ошибку ifstream?


#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

У вас должно быть '' вместо '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' ' Окно вывода должно содержать остальную часть этого сообщения об ошибке, включая номер строки, где вы делаете копию объекта «Mapper». –

+0

Вам нужно показать код, вызывающий вторую ошибку. –

ответ

58

Вы упускаете

#include <fstream> 

и вы, вероятно, назначить Somthing к inFile, не допускается.

+0

Почему-то мой вопрос вырезал часть, где я уже импортировал fstream – OghmaOsiris

+0

Вы можете отредактировать ее. И это поможет предоставить минимальный пример, который другие могут попытаться скомпилировать. –

+2

Я думаю, 'ifstream' включен в' ', пока я не взял стрелу в колене. – acgtyrant

Смежные вопросы