2012-01-25 12 views
24

Implicit instantiation of undefined template 'std::basic_ifstream<char,std::char_traits<char>>'Tại sao tôi nhận được lỗi ifstream này?


#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 

Tôi thậm chí đã cố gắng đưa std::ifstream và nó vẫn không hoạt động.

Khi tôi #include <fstream> thay vì #include <iostream>, tôi nhận được những sai sót trong fstream.tccbasic_ios.tcc:

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

Và kể từ đó là một phần của thư viện fstream, rõ ràng là một cái gì đó tôi đang làm là sai ...

Bất kỳ ai cũng có thể trợ giúp?

+1

Bạn phải có '' thay vì ' 'Toán tử' = 'là lỗi thực. Cửa sổ đầu ra sẽ có phần còn lại của thông báo lỗi đó, bao gồm số dòng nơi bạn tạo một bản sao của đối tượng 'Mapper'. –

+0

Bạn cần hiển thị mã gây ra lỗi thứ hai. –

Trả lời

58

Bạn đang thiếu

#include <fstream> 

và bạn có thể gán somthing để inFile mà không được phép.

+0

Vì lý do nào đó, câu hỏi của tôi cắt bỏ phần mà tôi đã nhập fstream – OghmaOsiris

+0

Bạn có thể chỉnh sửa nó. Và nó sẽ giúp cung cấp một ví dụ tối thiểu mà những người khác có thể cố gắng biên dịch. –

+2

Tôi nghĩ 'ifstream' được đưa vào '' cho đến khi tôi lấy một mũi tên ở đầu gối. – acgtyrant