2012-01-25 18 views
24

Implicit instantiation of undefined template 'std::basic_ifstream<char,std::char_traits<char>>'Perché sto ricevendo questo errore 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 

Ho anche provato a mettere std::ifstream e ancora non funziona.

Quando ho #include <fstream> invece di #include <iostream>, ottengo questi errori in fstream.tcc e basic_ios.tcc:

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

E poiché questo fa parte della biblioteca fstream, ovviamente qualcosa che sto facendo è sbagliato ...

Chiunque può aiutare?

+1

Si dovrebbe avere "" invece di "" L'operatore = "è l'errore reale. La finestra di output dovrebbe contenere il resto del messaggio di errore, incluso il numero di riga in cui si effettua una copia di un oggetto 'Mapper'. –

+0

È necessario mostrare il codice che causa il secondo errore. –

risposta

58

Ti manca

#include <fstream> 

e probabilmente assegnare somthing a inFile che non è consentito.

+0

Per qualche ragione la mia domanda ritaglia la parte in cui ho già importato fstream – OghmaOsiris

+0

Puoi modificarlo. E contribuirebbe a fornire un esempio minimo che altri possono provare a compilare. –

+2

Penso che "ifstream" sia incluso in "" finché non ho preso una freccia nel mio ginocchio. – acgtyrant

Problemi correlati