Russian Qt Forum
Июнь 15, 2024, 23:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 2 [3]   Вниз
  Печать  
Автор Тема: Resolve Links  (Прочитано 13338 раз)
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #30 : Февраль 13, 2013, 20:52 »

Ну блин, сравнили палец с <template>.
Вот именно. Улыбающийся
В классе А куча всего, чего ему знать не надо, но вы его усиленно пытаетесь этому научить. Он у вас завязан на все коллекции, на все классы... Это конечно хуже одного посредника.
Код покажите свой, а я его исправлю и сравним. Подмигивающий

А если A - базовый для B - то просто рухнет
Не придумывайте.  Подмигивающий
« Последнее редактирование: Февраль 13, 2013, 21:26 от Old » Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #31 : Февраль 14, 2013, 11:53 »

Если делать в общем виде, то может так
Код
C++ (Qt)
struct CDescriptorIO {
size_t mIndex;  // индекс
int mType;   // тип (для полиморфных)
};
 
void readObjectA( istream &is, A &obj, vector <CDescriptorIO> & desc )
{
   is >> obj.data1 >> obj.data2 >> ...;
   desc.clear();
   desc.push_back(CDescriptorIO());
   is >> desc.back().mIndex;
   ..
}
А при resolve объект опять получает вектор который сам заполнил и может восстановить указатели. Можно добавить в дескриптор и указатель на объект который заполнит пресловутый посредник. Возможна и более вызывающая реализация
Код
C++ (Qt)
size_t temp;
is >> temp;
obj.mPtrB = (B *) temp;
 
Без доп полей.

В классе А куча всего, чего ему знать не надо, но вы его усиленно пытаетесь этому научить. Он у вас завязан на все коллекции, на все классы... Это конечно хуже одного посредника.
Неубедительно. Если A держит указатель на B, значит хедер B он уже видит - не вижу какие новые зависимости возникают
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



Просмотр профиля
« Ответ #32 : Февраль 14, 2013, 14:02 »

Если делать в общем виде, то может так
Фух, ну слава Богу. Дааа, как-то вы не быстро соображаете. Улыбающийся

Неубедительно.
Забейте. Это уже не важно. Улыбающийся

Возможна и более вызывающая реализация
Код
C++ (Qt)
size_t temp;
is >> temp;
obj.mPtrB = (B *) temp;
 
Без доп полей.
Да, прямо вызывающая. Улыбающийся
А вообще есть union. Ну а что? Улыбающийся
« Последнее редактирование: Февраль 14, 2013, 20:11 от Old » Записан
Страниц: 1 2 [3]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.331 секунд. Запросов: 22.