|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Nov 2002
Città: Morbegno (SO)
Messaggi: 1410
|
[c++]eriditarieta e puntatoti
allora il problema e semplice:
#include <iostream> using namespace std; class Pippo{ public: int a; void set(){a=20;} }; class Pluto ![]() 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? |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
|
Re: [c++]eriditarieta e puntatoti
Certo basta dichiarare set come virtuale...
Quote:
|
|
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2002
Città: Morbegno (SO)
Messaggi: 1410
|
thx
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 10:42.