// ... istream& operator>>(istream& ris, GeoObj& gis) { if(ris) { String TypeString; ris >> TypeString; if(TypeString == gis.GetTypeString()) gis.ReadFrom(ris); else { cerr << "Error in GeoObj operator>>:"<< endl << " read a " << TypeString << endl << " but need a " << gis.GetTypeString() << endl; ris.setstate(ios::failbit); } } return ris; }