Ereditarietà C++

di il
7 risposte

Ereditarietà C++

Ciao a tutti..ho un piccolo dubbio con l'ereditarietà in c++..
In pratica credo la classe Persona(classe base) e la classe Studente(derivata);
Se faccio l'ereditarietà public tutto ok, ma provando quella protected,non mi fa accedere ai metodi protected della classe base.Come mai?I dati protected nella classe base rimangono tali anche nella derivata,quindi come mai non riesco?Posto il codice della classe Persona.h
Mi affido a voi grazie.
#ifndef PERSONA_H_
#define PERSONA_H_

#include<iostream>
using namespace std;



class Persona
{
public:
	Persona(string,string,int);
	Persona(string,string,int,int);

	void setNome(string);
	void setCognome(string);
	void setData(int);


	string getNome()const;
	string getCognome()const;
	int getDataDiNascita()const;

protected:
	int getCodiceFiscale(); // Spostato a protected per farlo ereditare con Ereditarietà protected!

	string nome;
	string cognome;
	unsigned dataDiNascita;
	int codiceFiscale;

private:
	void setCodiceFiscale(int);

};

#endif

7 Risposte

  • Re: Ereditarietà C++

    No. Se la derivazione Base - Derivata è protected i metodi public di Base diventano protected, mentre i membri protected di Base diventano private.
  • Re: Ereditarietà C++

    No non è cosi..
    http://www.bo.cnr.it/corsi-di-informatica/corsoCstandard/Lezioni/31Eredita.html
  • Re: Ereditarietà C++

    Edit.
  • Re: Ereditarietà C++

    Ricordavo male.
    Il resto del codice com'è?

    Edit:
    Esempio:
    
    class Base {
    	protected:
    		void test(int i) {
    			cout << i << endl;
    		}
    };
    
    class Derived : protected Base {
    	public:
    		void testfwd(int i) {
    			test(i);
    		}
    };
    
    int main() {
        Derived d;
        d.testfwd(4);
    }
    
  • Re: Ereditarietà C++

    Edit.
  • Re: Ereditarietà C++

    @GiorgioR
    Veramente rispondevo all'OP. Comunque se in warrior hai i membri protetti non puoi richiamarli: devono essere public. Il problema dell'OP è quello che non riesce a chiamare i membri protetti di Base in una classe Derivata con derivazione protected.

    Ho editato il post precedente mettendo un esempio minimale.
  • Re: Ereditarietà C++

    Ok scusa per il malinteso.
    faccio un altro post e edito questo per mettere in ordine
Devi accedere o registrarti per scrivere nel forum
7 risposte