Здравствуйте, sax0n, Вы писали:
S>скиньте, пожалуйста, пример. для ГУИ тоже очень интересно посмотреть пример.
Посмотрите
здесь.
S>В том примере компоновщик делает проверку во время выполнения. такое и я могу сделать. а я хочу во время компиляции, а лучше вообще без доступа к группирующим методам
Зачем?
S>Возможно, я в корне неправильно составил иерархию.
ИМХО, слишком сложно. Да и непонятно, зачем нужны разные типы. Создайте один объект —
Узел дерева. Он может быть и листом, и поддеревом. И в любой момент преобразоваться из листа в поддерево, а из поддерева — в лист (путём добавления или удаления дочерних элементов).
Если уж такое решение кажется некрасивым, то создайте два класса —
Элемента и
Группа и преобразуйте один к другому в ран-тайме.
А вообще, дизайн сильно зависит от того, какие операции Вы будете выполнять над этим деревом. Пока что Вы описали его в статике, а чтобы посоветовать что-то конкретное хорошо бы знать динамику.