Цитата(dxp @ Oct 15 2008, 08:32)

Или вам что-то другое надо?
Нет, "другого" не нужно. Вопрос в разной терминологии. Вы это называете "...общение ... на открытой части...", а я называл "..объявлением объекта перед использованием класса". Ваша терминология конечно правиль-на (-нee). Вообще, "одинаковый алфавит" - это начало начал при обсуждении любого вопроса.
В предложенном варианте необходимо "помнить" (держать в памяти) где и с каким именем объявлен объект slon. Если он объявлен в main - файле, то в в файле описания TMamont нужно этот обект объявлять как extern и т.д. Т.е. опять "возврат" к Си.
По "точный" ответ на "точный" вопрос вспомнился старый анекдот... Когда воздухоплаватель на воздушном шаре приземлился в незнакомой местности и спросил у проходившего мимо программиста: "Где я нахожусь?". И тот, после недолгого раздумья, ответил: "Вы находитесь в корзине воздушного шара." Ответ правильный и точный но...
(не примите, плз., это на свой счет, это так, к слову).
...
Правильнее, на мой "просветленный"

взгляд, построить "объектную модель программы" и создать иерархию классов с использованием абстактных классов (гл.12, "Язык программирования C++", Б.Страуструп). Хотя для Си - программиста это и покажется более сложным. Кстати,
предложенную Вами реализацию меню через наследование абстактного класса успешно реализовал, правда, как оказалось, не понимая сути
Цитата(alexander55 @ Oct 15 2008, 09:19)

Тут надо смотреть, как правильнее по смыслу.
...
Хорошо об этих проблемах написано в книге ""Философия Java".
Вы правы - "Философия...".

Т.е. нужно менять подход, а не искать "средства".
В общем-то, вопрос о способах доступа раскрыт, как мне кажется, полностью.
Главный вывод это то, что нельзя (неправильно, трудно, неэффективно...) использовать объекты для описания процедур.
Нужно или "заниматься" (программировать) обектно ориентированным программированием, или процедурным. Написана программа на Си - нет смысла пытаться "подогнать" ее под С++. А вот использовать готовые куски кода (функции) - пожалуйста.
Спасибо!
P.S. Способов два:
- через наследование.
НО! Если базовые классы не являются абстрактными, но наследование приводит к избыточному наличию копий базовых классов (обектов) (если не прав - поправьте);
- через указатель на класс (объект).
НО! Здесь проявляется вся "прелесть" продердурного программирования и смысл перехода от Си к С++ теряется.
... предложенное
dxp "включить один (класс) в другой" не рассматриваю, так как производных классов несколько, и включение базового в каждый .............
Вместе с тем, любой из вариантов работоспособен и не является ошибочным. И, в зависимости от ситуации, может быть применен.