Давайте предположим, что я хочу, чтобы единственный класс Child и только этот класс наследовал от Father
и предоставить Детям доступ к данным отцов. Кроме того, никто не должен наследовать от отца, чтобы добраться до его внутренних органов, поэтому я храню данные Отца в тайне
Редактировать: я выбрал защищенный, так как хочу, чтобы данные были скрыты. Некоторые люди отстаивают это как хорошую практику, но, возможно, это слишком догматично: (например, Херб Саттер в http://drdobbs.com/184403867) На самом деле класс следует продлить только один раз. Следовательно, запрет на наследование, как указал Стив Джессоп, был бы вариантом, но я думаю стоимость этого (виртуального и т. д.) заходит слишком далеко для того, что мне нужно.
Код будет выглядеть так:
class Father{
friend class Child;
public:
//functions
private:
int mData;
}
class Child: public Father{
public:
void changeData(int val){mData=val;}
}
У меня тут серьезные проблемы или это правильное решение, если исходить из того, что наследование было хорошим решением?