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

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

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

Сообщений: 11445


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

Вы предлагаете условия, а мы по ним играем... Не так ли?
Почему "условия"? Я показал, как сделал я, да, член данных "только для IO" конечно не украшает, но по-моему это оптимальное решение. Предлагайте лучше - с удовольствием послушаю.

Если вы перечитаете всю тему и посмотрите "свои наброски" с mIndex, то поймете, что у вас точно такойже функционал, только с большими ограничениями. Улыбающийся
Да чего же с "большими" когда совсем наоборот Непонимающий Я поддерживаю resolve указателей любого типа, а у Вас (во всяком случае пока) "детский сад" (A ссылается на B, а остальное хоть трава не расти).
Записан
Bepec
Гость
« Ответ #16 : Февраль 13, 2013, 18:41 »

Igors возьмите за пример OPC технологию если хотите.

Имеются ноды, взаимосвязанные между собой. Каждая нода может иметь n+1 связей с другими нодами. Каждая нода может содержать в себе n+1 объектов различных типов. Ноды не индексируются, а подгружаются по мере необходимости. Каждая нода имеет уникальный идентификатор, до трёх различных типов (гуид, число, строка). Соответственно получается этакая паутина. Да, нода может иметь, может не иметь объекты. Каждая нода может быть привязана к данных, а может являться индексом для других нод Веселый

Довольно мозголомная система. А степень загрузки нода отсвечивает при помощи событий, очень похожих на евента Qt. Но зато при использовании системы имеется факт - использование ровно стольки ресурсов, сколько необходимо, а не весь багаж.

PS к сожалению особые тонкости реализации не подскажу и не расскажу. А то голову оторвут Веселый Полтора ляма всё таки библиотечка Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

PS к сожалению особые тонкости реализации не подскажу и не расскажу. А то голову оторвут Веселый Полтора ляма всё таки библиотечка Улыбающийся
Ну почему же "к сожалению"? Пацаны предложили свои решения в теории графов и сняли за это бабки - 100% заслуженно, молодцы! Но тут такой глобвльной задачи не стоит - нужно только восстановить зависимости (т.е. "ребра" графа) а насколько он корректен и что с ним делать - то уже др вопрос
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



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

Почему "условия"? Я показал, как сделал я, да, член данных "только для IO" конечно не украшает, но по-моему это оптимальное решение. Предлагайте лучше - с удовольствием послушаю.
Вот выше я вам и привел набросок решения, которое избавляет ваш класс от совершенно ненужного ему члена. Улыбающийся
Вы не разобрались? Ах да, я обещал много комментариев и не привел их.

Да чего же с "большими" когда совсем наоборот Непонимающий Я поддерживаю resolve указателей любого типа, а у Вас (во всяком случае пока) "детский сад" (A ссылается на B, а остальное хоть трава не расти).
Вы вначале разберитесь. Мой пример делает ровно тоже, что и ваш, кроме того, что не хранит ненужные члены внутри каждого объекта класса. Вот где настоящий детский сад. И он так же поддерживает указатели на любые типы. Улыбающийся

В общем все как здесь:  Смеющийся
Код
C++ (Qt)
int mIndexIO;
};
 
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

Вот выше я вам и привел набросок решения, которое избавляет ваш класс от совершенно ненужного ему члена. Улыбающийся
Вы не разобрались? Ах да, я обещал много комментариев и не привел их.
Ну а "брать на понт" зачем? Улыбающийся Пусть экземпляр A ссылается на др A (а не на B). Или вообще на базовый класс для A и B? Как тогда отработает Ваш вариант?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



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

Ну а "брать на понт" зачем? Улыбающийся Пусть экземпляр A ссылается на др A (а не на B). Или вообще на базовый класс для A и B? Как тогда отработает Ваш вариант?
А давайте так. Вы выкладываете сюда свой вариант с супер-членом, а я его переделаю на хранение во внешней коллекции. Так сказать спасу эти классы от "технологических отверстий". Улыбающийся

А то у вас этот супер-индекс, сам разбирается на что указывает указатель... Вот какой талантливый int. Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

А давайте так. Вы выкладываете сюда свой вариант с супер-членом, а я его переделаю на хранение во внешней коллекции. Так сказать спасу эти классы от "технологических отверстий". Улыбающийся
Ну мне прилагать какие-то усилия (по выкладке Вам проекта и др) как-то неинтересно если с Вашей стороны заверения подтверждаются только наивным кодом - и ничем более

А то у вас этот супер-индекс, сам разбирается на что указывает указатель... Вот какой талантливый int. Улыбающийся
Да ну, сказали такое  Улыбающийся Тип-то есть, пусть базовый. Индекс тоже на руках - дальше дело несложной техники. А вот если вынести индекс - тонна геморроя. Или не так?

P.S. Не злитесь  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



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

Ну мне прилагать какие-то усилия (по выкладке Вам проекта и др) как-то неинтересно если с Вашей стороны заверения подтверждаются только наивным кодом - и ничем более
Другого ответа я и не ожидал. Улыбающийся

А вот если вынести индекс - тонна геморроя.
Опять пустые слова.
Ну да ладно... Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

Опять пустые слова.
У кого?  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



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

У кого?  Улыбающийся
У вас. Кода нет, одни "А вот если, то ... ". Там сложно, здесь не возможно... Бла бла бла Улыбающийся
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

У вас. Кода нет, одни "А вот если, то ... ". Там сложно, здесь не возможно... Бла бла бла Улыбающийся
Я структуру данных показал - из нее все очевидно. Да, пусть с минусами - ну редко работающий член. А у Вас вроде все "элементарно" - да только на словах, а до дела доходит -  рассыпается как карточный домик  Улыбающийся
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



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

Я структуру данных показал - из нее все очевидно. Да, пусть с минусами - ну редко работающий член. А у Вас вроде все "элементарно" - да только на словах, а до дела доходит -  рассыпается как карточный домик  Улыбающийся
С какими минусами? Она не может работать. Еще раз, int не сможет сохранить информацию о контейнере, в котором хранится объект. Значит, это требование вы как всегда "высосали из пальца" только что.
Ну и что нам спорить, давайте ваш код? А я его исправлю. Или слабо это даже показать? Улыбающийся
Ась?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

Ну и что нам спорить, давайте ваш код? А я его исправлю. Или слабо это даже показать? Улыбающийся
Ась?
Так это запросто
Код
C++ (Qt)
void A::ResolveLinks( void )
{
 mPtrB = GetCollection<B>()[mIndexIO_B];
 mPtrC = GetCollection<C>()[mIndexIO_C];
...
}
 
Какие проблемы? Чем плохо?
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4349



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

Какие проблемы? Чем плохо?
Ну так, а какие проблемы:
Код
C++ (Qt)
   for( int i = 0; i < numObjA; ++i )
   {
       collA[ i ]->ptrB = GetCollection<B>()[ idxCollA[ i ] ];
   }
 
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


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

Ну так, а какие проблемы:
Код
C++ (Qt)
   for( int i = 0; i < numObjA; ++i )
   {
       collA[ i ]->ptrB = GetCollection<B>()[ idxCollA[ i ] ];
   }
 
Ну блин, сравнили палец с <template>. У меня-то все в теле A, он прекрасно знает какие члены резолвить (любое число). А у Вас посторонка которая сует хобот во все подробности A и которую все время надо латать. А если A - базовый для B - то просто рухнет
Записан
Страниц: 1 [2] 3   Вверх
  Печать  
 
Перейти в:  


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