Sono bloccato con un problema C++. Ho una classe base che ha un puntatore all'oggetto autoreferenziale all'interno dell'area di visibilità privata della classe. Ho un costruttore nella classe base che inizializza questi due puntatori. Ora ho la mia classe derivata il cui specificatore di accesso è privato (voglio rendere private le funzioni membro pubblico della mia classe base). Ora attraverso le funzioni membro della mia classe derivata voglio creare un puntatore a oggetti che possa puntare ai dati privati della classe base, cioè a quei puntatori di oggetti autoreferenziali. Il mio codice è:Come rendere una classe derivata accedere ai dati dei membri privati?
class base{
private:
base *ptr1;
int data;
public:
base(){}
base(int d) { data=d }
};
class derived:private base{
public:
void member()
};
void derived::member()
{
base *temp=new base(val); //val is some integer
temp->ptr1=NULL; //I can't make this happen. To do this I had to declare all the
//private members of the base class public.
}
Utilizzare 'protected' anziché' private'? –
Crea un getter 'protetto' per il membro' private'? Di solito il tuo design è difettoso se hai bisogno di tali soluzioni, però. –
Anche questo non funziona. Errore del compilatore. Ho provato anche quello. Solo rendendolo pubblico posso accedervi. Ma questo renderebbe il codice vulnerabile. –