Polimorfismo e funzioni membro ereditate

di il
1 risposte

Polimorfismo e funzioni membro ereditate

Sto svolgendo un esercizio in cui mi si chiede di creare una classe trasmissione a partire dalla classe cambio e dalla classe frizione.
-Per il cambio:
using namespace std;
class cambio {
public:
	cambio(int n){
		numRapporti=n;
	}
	void print (){
		cout<<numRapporti;
	}
protected:
	int numRapporti;
};

#endif /* CAMBIO_H_ */

-Per la frizione :
class frizione {
public:
	//inserire 1 per una frizione monodisco, 2 per una frizione multidisco
	frizione(int type);
	void print();
protected:
	bool monodisco;
	bool multidisco;
};

//-------------------------------------------------------------il file .cpp
#include <iostream>
#include "frizione.h"
using namespace std;
frizione::frizione(int type) {
	if(type==1){
		monodisco=1;
		multidisco=0;
	}
	else if(type==2){
		monodisco=0;
		multidisco=1;
	}
	else
		cout <<"\nLa frizione non è stata impostata correttamente ";

}


void frizione::print(){
	if (monodisco)
		cout<<"monodisco";
	else if (multidisco)
		cout<<"multidisco";
}



-Ed infine la trasmissione :
#include <iostream>
#include "frizione.h"
#include "cambio.h"
using namespace std;

class trasmissione: public cambio,public frizione{
public:
	trasmissione(int type,int numRapp):frizione(type),cambio(numRapp){
		cout<<"Trasmissione creata";
		cout<<"\nNum rapporti cambio :"<<print();
	}
};
il mio problema sta proprio nell'ultima riga : cout<<"\nNum rapporti cambio :"<<print();
quel print() dovrebbe essere un metodo ereditato da una delle due classi, ma come il compilatore a capire quale delle due è? infatti non mi funziona, ho provato anche con l'operatore di risoluzione :
cambio::print() ma non va, come si fa in questi casi?

1 Risposte

  • Re: Polimorfismo e funzioni membro ereditate

    #include <iostream>
    #include "frizione.h"
    #include "cambio.h"
    using namespace std;
    
    class trasmissione: public cambio,public frizione{
    public:
    	trasmissione(int type,int numRapp):frizione(type),cambio(numRapp){
    		cout<<"Trasmissione creata";
    		cout<<"\nNum rapporti cambio :"<<print();
    	}
    };
    ho risolto così:
    cout<<"\nNum rapporti cambio :";
    cambio::print();
    quindi necessito comunque dell'operatore di risoluzione?
Devi accedere o registrarti per scrivere nel forum
1 risposte