Re[4]: Вызов функции произв.класса внутри STL-алгоритма
От: Anfi  
Дата: 11.03.05 14:15
Оценка:
Здравствуйте, eao197, Вы писали:

E>По вашему будет аккуратненько, если вы вызываете невиртуальные методы из производного класса применяя при этом pcast?


По-моему будет совсем "неаккуратненько" :-).
По этому и мучаюсь вопросами,
и с благодарностью принимаю Ваши соображения по этому поводу.

История вопроса такова:

я сейчас переделываю базовые классы достаточно крупного проекта на BCB6.0 так,
чтобы код был 1) более быстр 2) более переносим — на VC/gcc, в частности.

В BCB6.0 списки базировались на TList'е, с которым пришлось расстаться из-за его Паскалевского происхождения.
В связи с этим дозрел до STL и до необходимости перестройки иерархии базовых классов.

В проекте более 100 конечных классов, основанных на классе B и очень большой кусок функциональности можно реализовать на уровне этого класса и списка vector<B*>.
НО! Для производных классов существует огромное количество частного, относящегося к ним кода, который так и просится быть переведенным на язык алгоритмов STL.

Была попытка использоват шаблоны, которая провалилась из-за того, что специализация функций шаблона для
большого числа классов намертво убивала Борландовский линковщик. При числе классов >80 и числе файлов проекта ~>50
линкер вылетал с сообщением о нехватке памяти (на машине при этом по показаниям TaskManager'а было свободно нем менее 400 Мб оперативки). Кроме того, каждый OBJ файл занимал много мегабайт, поэтому с шаблонами пришлось завязать и использовать их по минимуму...

E>Здесь при наличии большого количество прозводных классов решение в корне менять нужно, а не костыли придумывать.


Так что еще раз спасибо за помощь!
Буду думать дальше...
Анатолий.
Re[4]: Извращать, так извращать :)
От: Anfi  
Дата: 11.03.05 14:21
Оценка:
Огромное спасибо, eao197!

Это, по-моему, наилучший вариант!

Анатолий.
Re[5]: Извращать, так извращать :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 11.03.05 14:46
Оценка:
Здравствуйте, Anfi, Вы писали:

A>Огромное спасибо, eao197!


A>Это, по-моему, наилучший вариант!

Вскрытие покажет

Обрати внимание, что там в call_method_t::pfn_t жестко зашита сигнатура метода. Если не все методы будут удовлетворять этой сигнатуре, то придется что-то додумывать.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.