Вопрос по грамотому проектированию
От: scf  
Дата: 18.02.05 21:04
Оценка:
надо список, который способен хранить элементы типа int и типа самого списка. А так же сохранять своё содержимое в файл.В идеальном мире, к которому наш, к сожалению, не относится, это могло бы выглядеть так:
mylist<int> a;
mylist<mylist<int>> b;
...
b.add(a);
...
a.save();
b.save();
Как это всё должно выглядеть на С++, и выглядеть ИЗЯЩНО?
никаких switch(node_type){case type_int: ...} и
void *node;
*(int *)node плиз...
Re: Вопрос по грамотому проектированию
От: scf  
Дата: 18.02.05 22:28
Оценка:
Нашел решение, можете не отвечать...
void Set<T>::save(FILE *f)
{
    int k = (int)m_data.size();
    if (fwrite(&k, 1, 4, f) != 4) throw "Ошибка записи в файл";
    for (std::list<T>::const_iterator i = m_data.begin() ; i != m_data.end(); i++)
        save(f, *i);
}
template<class T>
void Set<T>::save(FILE *f,const int &item)
{
    if (fwrite(&item, 1, 4, f) != 4) throw "Ошибка записи в файл";
}

template<class T>
void Set<T>::save(FILE *f,const Set<int> &item)
{
    item.save(f);
}


ИМХО изящнее некуда
Re: Вопрос по грамотому проектированию
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 19.02.05 06:44
Оценка:
scf пишет:

> надо список, который способен хранить элементы типа int и типа самого

> списка. А так же сохранять своё содержимое в файл.В идеальном мире, к
> которому наш, к сожалению, не относится, это могло бы выглядеть так:
> mylist<int> a;
> mylist<mylist<int>> b;
> ...
> b.add(a);
> ...
> a.save();
> b.save();
> Как это всё должно выглядеть на С++, и выглядеть ИЗЯЩНО?
> никаких switch(node_type){case type_int: ...} и
> void *node;
> *(int *)node плиз...
>
Советую посмотреть boost::serialization
Posted via RSDN NNTP Server 1.9
Re[2]: Вопрос по грамотому проектированию
От: scf  
Дата: 19.02.05 06:50
Оценка:
Здравствуйте, achmed, Вы писали:

A>Советую посмотреть boost::serialization


Ну все пишут про этот boost
А он действительно стоит того, чтобы тратить время на его изучение?
Re[3]: Вопрос по грамотому проектированию
От: achmed Удмуртия https://www.linkedin.com/in/nail-achmedzhanov-9907188/
Дата: 19.02.05 07:13
Оценка:
scf пишет:

> Здравствуйте, achmed, Вы писали:

>
> A>Советую посмотреть boost::serialization
>
> Ну все пишут про этот boost
> А он действительно стоит того, чтобы тратить время на его изучение?
>
Если собираешься прфессионально писать на C++ то стоит,
а если не собираешься, то хотя бы для общего роазвития можно
посмотреть.
Posted via RSDN NNTP Server 1.9
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.