Je veux faire faire un membre du public dans une classe de base privée dans une classe dérivée, comme ceci:Puis-je rendre privée une variable membre publique dans une classe dérivée?
class A {
public:
int x;
int y;
};
class B : public A {
// x is still public
private:
// y is now private
using y;
};
Mais apparemment « en utilisant » ne peut pas être utilisé de cette façon. Est-il possible de faire cela en C++?
(je ne peux pas utiliser l'héritage privé parce qu'il ya d'autres membres et les fonctions de A qui doit encore être public.)
Cela ressemble à un design bizarre. Même si vous pouvez le faire pour la classe B, tout ce que quelqu'un doit faire est upcast à un pointeur ou une référence à A, puis ils seraient en mesure d'accéder au membre. – TheUndeadFish
Copie possible de [C++: comment hériter publiquement d'une classe de base mais rendre certaines des méthodes publiques de la classe de base private dans la classe dérivée?] (Http://stackoverflow.com/questions/2986891/c-how-to -publicly-inherit-from-a-base-class-but-make-de-public-methods-fr) –