这是一个既简单又复杂的问题。
编译:
int Test;
vector<int> TEST;
TEST.push_back(Test);
cout << TEST.size();
这不编译:
fstream Test;
vector<fstream> TEST;
TEST.push_back(Test);
cout << TEST.size();
有什么特别的原因吗? 有没有办法让我获得 fstreams 的动态列表?
错误信息:
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 ==========
最佳答案
对象 fstream
不可复制。
如果需要记录fstream
s 在 vector
你可以声明一个 std::vector<std::fstream*>
并推回对象的地址。请记住,如果保存指针,则必须确保在访问它时该对象仍然存在。
关于c++ - 在 C++ 中将 fstreams 加载到 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9889243/