// File: NaivZGeo.cc // ... void ZGeoObj::ReadFrom(istream& ris) { String TypeString; GeoObj *NewGeoObj; int nCount = 0; ris >> nCount; for(int i = 0; (i < nCount) && (ris); i++) { ris >> TypeString; if(TypeString == "[Rechteck]") { NewGeoObj = new Rechteck; NewGeoObj->ReadFrom(ris); Add(*NewGeoObj); } else if(TypeString == "[RechteckRund]") { // ... siehe ZGeoObj } else if(TypeString == "[ZGeoObj]") { NewGeoObj = new ZGeoObj; NewGeoObj->ReadFrom(ris); Add(*NewGeoObj); } else { cerr << "Error in GeoObj factory:"<< endl << " read a " << TypeString << endl << " but don't know how to make the object" << endl; ris.setstate(ios::failbit); } } }