Questa è una domanda semplice e complessa allo stesso tempo.caricamento di stream in un file std :: vector in C++
Questo compila:
int Test;
vector<int> TEST;
TEST.push_back(Test);
cout << TEST.size();
Questo non può essere compilato:
fstream Test;
vector<fstream> TEST;
TEST.push_back(Test);
cout << TEST.size();
C'è un motivo particolare? C'è un modo per me di ottenere un elenco dinamico di flussi?
Il messaggio di errore:
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 ==========
In C++, questo diventa possibile: IOStreams sono mobili e il vettore supporterà i tipi mobili. – MSalters
@MSalters: un riferimento alla parte dello standard C++ 11 che afferma quanto sopra potrebbe essere utile ;-) –
@FrankH. : ["Praticamente tutta la sezione 27"] (http://stackoverflow.com/questions/7066691/is-stdofstream-movable), per citare Howard Hinnant. – MSalters