Well, one option is not to have a vector < FileParser > but rather a vector of smart pointers to your FileParser objects, so then copying the ifstream doesn't occur since there is only once instance of the ifstream and each smart pointer instance is just creating another reference to the ifstream.
vector< shared_ptr<ifstream> > v;
v.push_back( shared_ptr<ifstream>(new ifstream("test1") ) );
or better yet,
v.push_back( make_shared<ifstream>("file1") );
Actually, in your case, you aren't making a shared_ptr < ifstream > but rather shared_ptr< FileParser >.