Ciao, sto provando a fare ereditare delle variabili private dichiarate in una superclasse alla sua sottoclasse.
So che basterebbe dichiararle protected o public ma se sono private?
Vorrei fare come in JAVA quando nel costruttore della sottoclasse uso super.
E' possibile fare questa cosa?
Ho provato con una friend function ma non riesco, quindi ho bisogno del vostro aiuto.
Questa è la classe anagrafica
#ifndef ANAGRAFICA_H
#define ANAGRAFICA_H
#include<string>
using namespace std;
class Anagrafica
{
public:
Anagrafica();
void registra();
void mostra();
friend void creaStudente(int ,string ,string );
protected:
private:
int codice;
string cognome;
string nome;
bool registrato;
};
#endif // ANAGRAFICA_H
#include "Anagrafica.h"
#include<iostream>
Anagrafica::Anagrafica()
{
registrato=false;
}
void Anagrafica::registra()
{
registrato=true;
}
void Anagrafica::mostra()
{
if(registrato){
cout<<codice<<endl;
cout<<cognome<<endl;
cout<<nome<<endl;
cout<<"----"<<endl;
}
else{
cout<<"non registrato"<<endl;
}
}
Questa è la studente che eredita da anagrafica
#ifndef STUDENTE_H
#define STUDENTE_H
#include <Anagrafica.h>
class Studente : public Anagrafica
{
public:
Studente();
void promuovi();
void controlla();
protected:
private:
bool promosso;
};
#endif // STUDENTE_H
#include "Studente.h"
#include<iostream>
Studente::Studente(){}
void Studente::promuovi()
{
promosso=true;
}
void Studente::controlla()
{
if(promosso){
cout<<"studente promosso"<<endl;
}
else{
cout<<"non promosso"<<endl;
}
}
Questo è ilmain
#include <iostream>
#include"Anagrafica.h"
#include"Studente.h"
using namespace std;
int main()
{
cout << "Hello world!" << endl;
Studente s1;
char risposta;
s1.creaStudente(1,"rossi","mario");
return 0;
}