Mason
21-05-2003, 18:09
allora il problema e semplice:
#include <iostream>
using namespace std;
class Pippo{
public:
int a;
void set(){a=20;}
};
class Pluto:public Pippo{
public:
void set(){a=11;}
};
int main (){
Pippo *p,pip;
Pluto plu;
cout << "pippo "<< pip.a <<endl;
pip.set();
cout << "pippo "<< pip.a <<endl;
cout << "pluto " <<plu.a <<endl;
plu.set();
cout << "pluto " <<plu.a <<endl;
p=new Pippo();
cout <<p->a<<endl;
p->set();
cout <<p->a<<endl;
free(p);
p=new Pluto();
cout <<p->a<<endl;
(*p).set();
cout <<p->a<<endl;
free(p);
}
il prob e che nel caso del puntatore il metodo set punta sempre alla classe Pippo, mentre non usando i puntatori il metodo viene richiamato giusto.
esiste la possibilita di usare il set di Pluto anche usando un puntatore all'oggetto,naturalmente dichiarato come *Pippo?
#include <iostream>
using namespace std;
class Pippo{
public:
int a;
void set(){a=20;}
};
class Pluto:public Pippo{
public:
void set(){a=11;}
};
int main (){
Pippo *p,pip;
Pluto plu;
cout << "pippo "<< pip.a <<endl;
pip.set();
cout << "pippo "<< pip.a <<endl;
cout << "pluto " <<plu.a <<endl;
plu.set();
cout << "pluto " <<plu.a <<endl;
p=new Pippo();
cout <<p->a<<endl;
p->set();
cout <<p->a<<endl;
free(p);
p=new Pluto();
cout <<p->a<<endl;
(*p).set();
cout <<p->a<<endl;
free(p);
}
il prob e che nel caso del puntatore il metodo set punta sempre alla classe Pippo, mentre non usando i puntatori il metodo viene richiamato giusto.
esiste la possibilita di usare il set di Pluto anche usando un puntatore all'oggetto,naturalmente dichiarato come *Pippo?