Здравствуйте, Кирилл Лебедев, Вы писали:
КЛ>Посмотрите здесь.
WinAPI в теме про ООП — не особо хороший пример ИМХО. C-style со своими плюшками. Или я не туда посмотрел?
S>>В том примере компоновщик делает проверку во время выполнения. такое и я могу сделать. а я хочу во время компиляции, а лучше вообще без доступа к группирующим методам
КЛ>Зачем?
Александреску начитался =)
а вообще, почему Зачем?! для легкости и однозначности использования, типобезопасности и т.д.
КЛ>ИМХО, слишком сложно. Да и непонятно, зачем нужны разные типы. Создайте один объект — Узел дерева. Он может быть и листом, и поддеревом. И в любой момент преобразоваться из листа в поддерево, а из поддерева — в лист (путём добавления или удаления дочерних элементов).
КЛ>Если уж такое решение кажется некрасивым, то создайте два класса — Элемента и Группа и преобразуйте один к другому в ран-тайме.
почему же сложно?
я хочу, чтобы в моем интерфейсе IElement только в нужный момент появлялись методы интерфейса IGroup, чтобы они были вообще недоступны для обычных элементов (а не были заглушки).
не хочется делать так для всех элементов:
structure< IElement >::iterator iter;
if ( iter->hasChildren() ){}
а хочется точно знать, что у этого элемента могут быть (0+ штук) или не могут быть элементы вообще и т.д. Можно сделать и так, как вы предлагаете. просто есть возможность еще поиграться и выбрать самую удобную, красивую и безопасную архитектуру.