LINUX.ORG.RU

Сериализация в Qt.

 , ,


0

3

Возможна ли в Qt, ну или не обязательно в Qt, сериализация с автоматическим определением типа сериализованного объекта, т.е. что-то такое:

ChildA *a = new ChildA();
ChildB *b = new ChildB();
QList<Base *> list;
list.append(a);
list.append(b);
foreach (e: list)  {
    out << e;
}

...
Base *c;
out >> c;
c.execute();//вызывается метод ChildA
out >> c;
c.execute();//вызывается метод ChildB
?

★★★★

не обязательно в Qt:

class Base {
  virtual void serialize(...) = 0;
  static Base *deserialize(...);
};

const86 ★★★★★
()

QMetaObject + свой велосипед.

alpha4
()

Именно для этого придумали виртуальные методы, чувак. Не забудь деструктор сделать виртуальным тоже.

nanoolinux ★★★★
()
Ответ на: комментарий от Begemoth

Это в С++-то?

Да. Не совсем понял суть вопроса.

//Кхм, зашел на википедию, похоже термин RTTI относится не только к С++, но и к другим языкам. Я думал, это локальный термин.

pathfinder ★★★★
()
Ответ на: комментарий от pathfinder

Не совсем понял суть вопроса.

Возможно я не совсем понял суть твоего предложения, я подумал о том, что ты употребил термин RTTI не в узком C++-овском смысле, а в смыле рефлексии. В любом случае, даже как замена ручному тегированию классов RTTI плох - из-за непереносимости между разными компиляторами и в принципе между разными версиями одного компилятора (ABI в GCC уже меняли).

Begemoth ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.