Newsgroup: it.comp.lang.c++
Titolo: Aiuto Puntatore This

Salve a tutto il NG,
ho cominciato da poco lo studio del C++ dopo diversi anni di programmazione
in Pascal, ora mi sono imbattoto in alcuni listati che utilizzano un  certo
puntatore detto "THIS" che non riesco a capire bene il significato.
Gradirei ricevere qualche informazione dettagliata con un piccolo esempio
se possibile.
Grazie anticipatamente per la risposta.
e-mail:rol...@freemail.com

Ci provo.
Supponi di avere un'istanza di una classe (che e` piu` o
meno una variabile di un tipo class).
All'interno della classe (cioe` nelle funzioni membro
della classe) puoi usare il puntatore this come
il puntatore all'istanza stessa.
E` come un autopuntatore.
Un esempio.
Se la funzione sotto fosse quella di una classe, allora
all'ipotetico membro "int contatore" puoi accedere in
2 modi:
void NomeClasse::NomeFunzione()
{
    contatore = 1;
    this->contatore = 1;
}
Il primo e` diretto, il secondo tramite puntatore.
Lo so che la "spiegazione" non e` il mio forte, ma
spero che sia meglio di una "non spiegazione".
Ciao, Michele.

se possibile.
La keyword "this" e` valida solo entro un metodo non statico di un
oggetto, e in questo caso e` un puntatore all'oggetto stesso di cui si
sta eseguendo un metodo -- "questo" oggetto (in inglese, "this"
significa, appunto, "questo").  Alcuni altri linguaggi usano "self",
"me", o altri sinonimi ancora, per denominare concetti analoghi.
Ecco un piccolo esempio:
class pippo;
void faiqualcosa(pippo* pIlPippo);
class pippo {
public:
    void fai();
    void fai2volte();
};
void pippo::fai() {
    faiqualcosa(this);
}
void pippo::fai2volte() {
    faiqualcosa(this);
    faiqualcosa(this);
}
Alex
 

se possibile.
"this" (in minuscolo) e` un puntatore all'istanza su cui una funzione membro non
statica viene invocata. Esso e` passato come parametro "invisibile" al metodo invocato
ed e` solitamente utilizzato in modo trasparente dal compilatore per capire a quale
istanza riferisce il metodo a run-time. In alcuni casi puo` essere comodo poter accedere
a questo puntatore, e in c++ lo si fa tramite la keyword this.
Anche il turbo pascal (5.5+) fornisce tale meccanismo (che anche li si chiama this).
Paolo
----------------------------------------------------------
  Paolo Marotta
  Computer Science, University of Pisa
  home:   
http://www.cli.di.unipi.it/~marotta
  e-mail: 
mar...@cli.di.unipi.it
 
----------------------------------------------------------

 puntatore detto "THIS" che non riesco a capire bene il significato.
Il puntatore si chiama this con le lettere minuscole ed č un puntatore
passato implicitamente ad ogni metodo di una classe. Punta all'istanza
corrente e serve a poter accedere direttamente ai membri della classe
senza doverli referenziare. Es.:
class pippo
{
    public:
        void miometodo();
    private:
        int n;
};
Grazie al puntatore this posso scrivere:
void pippo::miometodo()
{
    n = 10;
}
in quanto il compilatore automaticamente pone
this -> n = 10;
EMG

 E` come un autopuntatore.
Attenzione: gli auto_puntatori (auto_ptr) in C++ sono qualcosa di ben
preciso (puntatori incapsulati in un class template) e quindi il termine
non è appropriato.
EMG

Alex
Ehi, ma nel tuo esempio manca void pippo::fai3volte( ;)
please remove NOSPAM from email address to write me.
-------------------------------------------------------
Free download software: Post-it, Scheduler, Slide-show, Calendar, 
  Network Chat, Network Mail, Phone book, Apps Laucher... at:
http://come.to/oddera