Показать сообщение отдельно
Старый 18.09.2005, 11:12     # 6
PSyton
Junior Member
 
Аватар для PSyton
 
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187

PSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форумеPSyton Популярный человек на этом форуме
согласен с alexey_ma
лино я поступил бы примерно так (очень примерно):

Код:
//для Figure завел бы методы, в качестве параметров которым был бы,
//к примеру, дескриптор открытого файла. 
virtual bool Read(int rFile);
virtual bool Write(int wFile);
//естественно для каждой фигуры переписал этот метод так чтобы 
//она умела читать и писать инфу о себе в нужном виде.
//так же завел бы где-нибудь 

Figure *CreateFigure(const figuretype &ft)  
{
  swtich(ft)
  {
  case circle:
    return (Figure *)new Circle();
    ...    
  case cube:
    return (Figure *)new Cube();
  }
  return (Figure *) new UnsupportedFigure(); //Ну или Exception выкидывать
}
//После чего в контейнере метор Read будет выглядеть примерно так.    

{
  int mFile;
  //Открываем файл и читаем из него инфу всякую. потом доходим до
  //самих фигур и читаем тип первой  
  while (!end)
  {
    Figure *newf=CreateFigure(readtype);
    newf->Read(mFile);
    m_storage.push_back(newf);
  }
  //Закрываем файл все прочитано 
}
//Метод Write контейнера еще проще:  
{
  int mFile;
  //Открываем файл и пришем в него инфу всякую
  for (vector<Figure*>::const_iterator iter=m_storage.begin();
        iter!=m_storage.end();iter++)
    (*iter)->Write(mFile);  
  //Закрываем файл все записано
}
Естественно это просто набросок на вскидку, но уже здесь для добавления поддержки новых фигур в контейнере переписывать почти ничего не придется.
__________________
Дураки не динозавры - они не вымрут...
PSyton вне форума