2012-01-25 21 views
24

Implicit instantiation of undefined template 'std::basic_ifstream<char,std::char_traits<char>>'¿Por qué recibo este error 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 

incluso he intentado poner std::ifstream y todavía no funciona.

Cuando #include <fstream> en lugar de #include <iostream>, consigo estos errores en fstream.tcc y basic_ios.tcc:

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

Y puesto que eso es parte de la biblioteca fstream, obviamente, algo que estoy haciendo está mal ...

¿Alguien capaz de ayudar?

+1

Debería tener '' en lugar de '' El 'operator =' es el error real. La ventana de salida debe tener el resto de ese mensaje de error, incluido el número de línea donde hace una copia de un objeto 'Mapper'. –

+0

Debe mostrar el código que causa el segundo error. –

Respuesta

58

Te estás perdiendo

#include <fstream> 

y es probable que asignar a somthing inFile que no está permitido.

+0

Por alguna razón, mi pregunta corta la parte donde ya importé fstream – OghmaOsiris

+0

Puede editarlo. Y ayudaría a proporcionar un ejemplo mínimo que otros puedan intentar compilar. –

+2

Creo que 'ifstream' está incluido en' ' hasta que tome una flecha en mi rodilla. – acgtyrant

Cuestiones relacionadas