Во-первых:
Если классы взаимодействуют между собой так, что им нужна только часть функциональности друг друга, обычно делается базовый класс ( или они оба будут предками - не принципиально )исключительно для работы с общей областью. Например есть классы ШКАФ и СТОЛ. Кроме того что они могут быть оба деревянными, их оба можно собирать используя ключ на 12. В таком случае "сборщик мебели" должен быть отдельным классом, и крутить гайки где угодно - и в ШКАФ и в СТОЛ. И все гайки и ключ должны быть у сборщика, а не перетаскиваться из ШКАФ в СТОЛ и назад. А если классы отличаются только типом данных - прямая дорога в шаблоны, хотя я ниразу не построил модель данных в них нуждающуюся.
Во-вторых:
Я плохо понимаю что такое "знать ЯП в теории". Но не суть - дело не в том, что в твоей задаче нет наследования, а в том, что ты НЕПРАВИЛЬНО организовал структуру классов и с точки зрения идеологии и с точки зрения подхода. Например - по возможности ВСЕГДА НАДО выносить тела функций ( ну кроме inline и совсем уж маленьких ) в файл .[cc,cpp].
В-третьих:
Наследование как папа/дите вещь совершенно не обязательная - сделай базовый класс Tools который будет иметь ТОЛЬКО функции сборки мебели. Тоже наследование, своеобразное правда. Именно в этом случае (ты писАл, что работал в винде) показательно было бы разобрать структуру классов какого-нибудь MFC-приложения в MSVC ( для других целей он плохо подходит ).
ЗЫЖ Когда я начинал юзать плюса я налетал на теже грабли - через это все проходят. Дело не в том, что кто-то не умеет "мыслить на уровне объектов", а в том, что ПРИМЕНИТЬ это умение к С++ можно только после приличной практики. Это как пользоваться const вместо #define - "сначала боишься, потом гордишься" :-)
|