Здравствуйте, eao197, Вы писали:
E>По вашему будет аккуратненько, если вы вызываете невиртуальные методы из производного класса применяя при этом pcast?
По-моему будет совсем "неаккуратненько" :-).
По этому и мучаюсь вопросами,
и с благодарностью принимаю Ваши соображения по этому поводу.
История вопроса такова:
я сейчас переделываю базовые классы достаточно крупного проекта на BCB6.0 так,
чтобы код был 1) более быстр 2) более переносим — на VC/gcc, в частности.
В BCB6.0 списки базировались на TList'е, с которым пришлось расстаться из-за его Паскалевского происхождения.
В связи с этим дозрел до STL и до необходимости перестройки иерархии базовых классов.
В проекте более 100 конечных классов, основанных на классе B и очень большой кусок функциональности можно реализовать на уровне этого класса и списка vector<B*>.
НО! Для производных классов существует огромное количество частного, относящегося к ним кода, который так и просится быть переведенным на язык алгоритмов STL.
Была попытка использоват шаблоны, которая провалилась из-за того, что специализация функций шаблона для
большого числа классов намертво убивала Борландовский линковщик. При числе классов >80 и числе файлов проекта ~>50
линкер вылетал с сообщением о нехватке памяти (на машине при этом по показаниям TaskManager'а было свободно нем менее 400 Мб оперативки). Кроме того, каждый OBJ файл занимал много мегабайт, поэтому с шаблонами пришлось завязать и использовать их по минимуму...
E>Здесь при наличии большого количество прозводных классов решение в корне менять нужно, а не костыли придумывать.
Так что еще раз спасибо за помощь!
Буду думать дальше...
Анатолий.
Обрати внимание, что там в call_method_t::pfn_t жестко зашита сигнатура метода. Если не все методы будут удовлетворять этой сигнатуре, то придется что-то додумывать.
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
SObjectizer: <микро>Агентно-ориентированное программирование на C++.