2013-01-20 22 views
5

Tôi có đoạn mã sau trong Eclipse CDT (Juno SR1):lỗi xạ giả trong Eclipse CDT: boost :: iostreams

#include <fstream> 
#include <iostream> 

#include <boost/iostreams/filter/gzip.hpp> 
#include <boost/iostreams/filtering_streambuf.hpp> 
#include <boost/iostreams/copy.hpp> 

int main() 
{ 
    using namespace std; 
    namespace io = boost::iostreams; 

    ifstream file("data.gz", ios_base::in | ios_base::binary); 
    io::filtering_streambuf<io::input> in; 
    in.push(io::gzip_decompressor());  // error here 
    in.push(file);       // and here 
} 

g++ 4.7.2 không có vấn đề với mã. Eclipse, tuy nhiên, phàn nàn về hai dòng in.push(). Thông báo lỗi giống nhau trong cả hai trường hợp:

Invalid arguments ' 
Candidates are: 
void push(std::basic_streambuf<#10000,#10001> &, ?, ?) 
void push(std::basic_istream<#10000,#10001> &, ?, ?) 
void push(std::basic_ostream<#10000,#10001> &, ?, ?) 
void push(std::basic_iostream<#10000,#10001> &, ?, ?) 
void push(const boost::iterator_range<#10000> &, ?, ?) 
void push(const boost::iostreams::pipeline<#10000,#10001> &) 
void push(const #10000 &, ?, ?, boost::disable_if<boost::iostreams::is_std_io<#10000>,void>::type *) 
' 

Làm cách nào để khắc phục hoặc giải quyết vấn đề này để ngừng khiếu nại CDT?

+0

hm lạ: Tôi biết CDT có khá nhiều vấn đề với một số tính năng nâng cao ... nhưng tất cả chúng đều được khắc phục ngay bây giờ. Bạn có thể thử tắt tính năng "phân tích mã" và xây dựng lại các chỉ mục dự án của bạn không? – Najzero

+1

Xây dựng lại các chỉ số dự án không tạo ra sự khác biệt nào. Vô hiệu hóa phân tích mã dừng CDT khỏi phàn nàn; tuy nhiên, tôi muốn giữ mã phân tích nếu có thể. – NPE

+1

Những gì tôi mong đợi là std :: ifstream được chuyển đổi hoàn toàn sang baseclass std :: istream, do đó, các ứng cử viên thứ hai phù hợp. Những gì tôi sẽ thử là truyền 'static_cast (tệp)' vào hàm push(). Nếu điều này không làm việc, điều duy nhất tôi có thể tưởng tượng là một sự không phù hợp trong các tham số mẫu, nhưng đó sẽ là một lỗi thực sự lạ. Mặt khác, tôi chưa làm việc với CDT, vì vậy thật khó để nói. –

Trả lời

0

Tôi không thấy vấn đề này trong Juno SR2, vì vậy có lẽ giải pháp đơn giản nhất là cập nhật cài đặt Eclipse của bạn, giả sử tất cả các plugin bạn sử dụng đều tương thích với SR mới nhất.

Các vấn đề liên quan