Проблема с потоками
От: KosTiger Россия  
Дата: 27.04.07 10:25
Оценка:
Привет всем!

У меня ошибка — не могу понять почему.

Открываю текстовый поток и передаю его как shared_ptr<ifstream> функции, которая должна загрузить из этого потока один из объектов. Пробую загрузить один из объектов, если не получается то другой.

Выглядит это так
spIobject loader(sp_ifstream ifs)
{
  spIobject res;
  spOneObject oo;
  spAnotherObject ao;
  try{
    oo = OneObject::load( *ifs );
  }
  catch( ... )
  {
  }
  if( oo.use_count() == 0 )
  {
    try{
      ao = AnotherObject::load( *ifs );
    }
    catch( ... ) 
    {
    }
  }
  else
    res = oo;
  return res;
}


Где типы определены следующим образом: spТип — boost::shared_ptr<Тип> ,
class Iobject
{
...
};

class OneObject : protected Iobject
{
friend spIobject loader(sp_ifstream ifs);
...
};

class AnotherObject : public Iobject
{
};


В функциях загрузки сохраняю позицию в потоке и, если не могу загрузить объект, то восстанавливаю прежнюю позицию.

Не пойму в чем косяк. Когда-то слышал, что у текстовых потоков seekg() не работает, но на упрощенном тестовом примере эта функция одинаково показала себя в текстовом и двоичном режимах.

Вправьте мне мозги, плииз

Заранее спасибо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.