|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 70
|
C++: Puntatori... i soliti ignoti!
So che questa domanda domanda può apparire priva di senso ma vi assicuro che non è così.
Come si passa by reference un puntatore? |
|
|
|
|
|
#2 |
|
Member
Iscritto dal: Nov 2005
Messaggi: 70
|
Magari mi spiego meglio.
Io ho un template, con un metodo Insert: template <class Type> struct MyClass{ private: Type Object; public: MyClass(){} ~MyClass(){} void Insert(Type& Object) { this->Object = Object; } }; Supponiamo di definire questa classe: MyClass<int*> Prova; La domanda è come passo il parametro nel metodo Insert. int Value; Prova.Insert(&Value) mi dà il seguente errore di compilazione: è impossibile convertire il parametro 1 da "int* _W64" a "int*&" with [Type=int*] |
|
|
|
|
|
#3 | |
|
Member
Iscritto dal: Nov 2005
Messaggi: 70
|
Quote:
int* ValuePointer = &Value; Prova.Insert(PointerValue); |
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2004
Messaggi: 16053
|
quando usi le References ( & ) non devi usare la & nel passaggio di parametri ai metodi/funzioni
Codice:
int Value; Prova.Insert(Value); |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4739
|
diventa tutto chiaro se consideri la & usata come operatore in un L-value piuttosto che in un R-Value (rispettivamente, membro sinistro e destro di uno statement di assegnazione): nel primo caso vale come aliasing o copy constructor
nel secondo è address of (reference), solitamente usato per inizializzare un L-value costituito da un puntatore
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
|
|
|
|
|
|
#6 | |
|
Member
Iscritto dal: Nov 2005
Messaggi: 70
|
Quote:
La soluzione che ho trovato, utilizzando due istruzione, funziona ma passare by reference un puntatore in una sola istruzione credo non si possa fare (forse per problemi di ambiguità dell'istruzione) |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:57.



















