2012-02-29 18 views
5

Sto lavorando su qualcun altro codice al lavoro (Qt Applicazione desktop) ed ho trovato questo:Indirizzo del puntatore de-referenziato?

connect(&*mpMainWin, SIGNAL(whatever()), this, SLOT(whatever()))); 

ho qualche difficoltà a capire la parte &*mpMainWin. Per quanto ne so sui puntatori, restituisce l'indirizzo del puntatore de-referenziato mpMainWin.

Ma l'indirizzo è già in possesso di mpMainWin, quindi assegnarlo direttamente come parametro dovrebbe avere lo stesso risultato.

Quindi, se non mi manca nulla e la mia logica è giusta, qual è la ragione di fare una cosa del genere? e se ce n'è uno quando dovremmo usare quel tipo di sintassi?

+5

Il tipo di 'mpMainWin' ha un operatore di dereferenziazione sovraccarico? –

+0

No Non trovo sovraccarico nella sua intestazione. – talnicolas

+1

Cosa ne pensi della sua superclasse? Hai provato a togliere '& *' per vedere cosa succede? –

risposta

9

Questo può essere utilizzato come un trucco per convertire un puntatore intelligente (ovvero non un puntatore, una classe che implementa operator*()) in un puntatore semplice. Senza vedere come viene dichiarato mpMainWin è impossibile dire se questo è il caso qui. Se mpMainWin è un puntatore semplice per iniziare quindi sì, &*mpMainWin è lo stesso di mpMainWin.

+0

In realtà è un puntatore intelligente. Ben fatto... – talnicolas

Problemi correlati