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?