Как с большинством "это плохо делать X?" вопросы, ответ заключается в том, что это полностью зависит от конкретной ситуации.
Иногда может быть очень плохой идеей иметь функцию getC()
, потому что она нарушает инкапсуляцию. В других случаях это может быть совершенно нормально, потому что инкапсуляция этой детали может быть неактуальной, а написание большого количества функций-оболочек увеличивает объем кода, который вам нужно написать.
Выберите тот, который имеет наибольшее значение для данной ситуации. В коде, который я написал, я использовал оба подхода.
Если вы идете по маршруту getC()
, обязательно верните ссылку; в противном случае вы будете изменять копию, которая не звучит так, как вы хотите. Или, возможно, вы захотите сделать A::c
общедоступным, чтобы вообще не нуждаться в функции.
Третий вариант, который следует рассмотреть, это наследование от C
, которое устраняет необходимость в getC()
или функциях-оболочках в A
.