Đây là một câu hỏi đơn giản và phức tạp cùng một lúc.tải fstreams vào một std :: vector trong C++
này biên dịch:
int Test;
vector<int> TEST;
TEST.push_back(Test);
cout << TEST.size();
này không biên dịch:
fstream Test;
vector<fstream> TEST;
TEST.push_back(Test);
cout << TEST.size();
Có bất kỳ lý do cụ thể không? Có cách nào để tôi có được danh sách năng động của các luồng không?
Các thông báo lỗi:
1>------ Build started: Project: vector_test, Configuration: Debug Win32 ------
1> vector_test.cpp
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\fstream(1347): error C2248: 'std::basic_ios<_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios<_Elem,_Traits>'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\ios(176) : see declaration of 'std::basic_ios<_Elem,_Traits>::basic_ios'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
1> This diagnostic occurred in the compiler generated function 'std::basic_fstream<_Elem,_Traits>::basic_fstream(const std::basic_fstream<_Elem,_Traits> &)'
1> with
1> [
1> _Elem=char,
1> _Traits=std::char_traits<char>
1> ]
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Trong C++, điều này sẽ trở thành có thể: IOStream có thể di chuyển và vector sẽ hỗ trợ các loại di chuyển. – MSalters
@MSalters: Một tham chiếu đến một phần của tiêu chuẩn C++ 11 trong đó nêu trên có thể hữu ích ;-) –
@FrankH. : ["Khá nhiều phần 27"] (http://stackoverflow.com/questions/7066691/is-stdofstream-movable), để báo Howard Hinnant. – MSalters