А>А>class Vertex
А>{
А> public:
А> // .......
А> private:
А> //.......
А> std::vector<Vertex> * children;
А>};
А>
А>А затем сериализовать вектора и вершины;
А>Но когда я попробую считать(после неодной перезагрузки) я не смогу
А>восстановить структуру дерева т.к.
А>сохраненные указатели на детей уже
А>не будут таковыми(узлы ведь не будут
А>восстановлены в то же самое место в памяти,или я чегото не понимаю?)
Если наследовать все свои классы из CObject — то как раз восстановится структура дерева, указатели конечно по значению могут оказаться и другими, но указывать будут на "правильные" объекты.Об этом позаботится MFC.
Очень рекомендуемо почитать на RSDN статью "Сериализация в MFC".
http://rsdn.ru/article/?mfc/mfcseria.xmlАвтор(ы): Джим Биверидж
Дата: 17.04.2001
В статье очень подробно рассматривается механизм сериализации, реализованный в MFC. Автор
дает полную информацию о работе макросов DECLARE/IMPLEMENT_DYNAMIC, DECLARE/IMPLEMENT_SERIAL
и DECLARE/IMPLEMENT_DYNCREATE. Также обсуждается поддержка версий схем сериализации.
В двух словах — есть если у вас есть скажем 2 объекта, в которых например хранятся указатели друг на друга — то после сохранения и востановления они конечно могут и изменится, но все равно будут указывать друг на друга.
И еще — скажем так
CTestClass *pClass1;
CTestClass *pClass2=pClass1;
.....
archive << pClass1;
archive << pClass2;
— тут запишется всего одна копия объекта — ибо он допрет что указатели ссылаюися на одно и тожу,
и когда потом вы напишете
archive >> pClass1;
archive >> pClass2;
то восстановится тоже 1 оюъект, и оба указателя будут указывать на него.
Саша.
P.S. гдето я это уже писал

— попробуйте поиск.....
Саша.