Come posso passare un puntatore (Object *ob
) a una funzione il cui prototipo è void foo(Object &)
?Come eseguire il cast/convertire il puntatore in riferimento in C++
risposta
chiamare in questo modo:
foo(*ob);
Si noti che non v'è alcuna fusione succedendo qui, come suggerito nel titolo domanda. Tutto ciò che abbiamo fatto è de-referenziare il puntatore all'oggetto che poi passiamo alla funzione.
@Ricobob Ecco cosa succede su SO così spesso. Le risposte a semplici domande che possono essere facilmente comprese spesso raccolgono molti voti. Le risposte lunghe e complesse a domande complicate ottengono spesso pochi voti perché gli elettori non possono facilmente giudicare il merito. Per quanto riguarda il rappresentante, non ho ottenuto nulla su questo a causa del rep cap. ;-) Ma sono d'accordo Vorrei che le risposte complesse abbiano ottenuto più ripetizioni. –
@DavidHeffernan Sì, questo sembra essere il problema - immagino sia un problema da prendere in MetaSO - se qualcuno non lo ha già fatto. – Ricibob
@ricobob Mi aspetto che sia già stato sollevato. –
foo(*ob);
indovinando e aggiungendo un sacco di ... non è solitamente il formato di una buona risposta qui (anche se è corretto in questo caso), questo è probabilmente il motivo per cui hai ottenuto un downvote. – KillianDS
bhhaaa, ho aggiunto il "Credo" perché mi ha fatto scrivere almeno 30 caratteri. anche questo è il modo in cui aggiungo "..........." –
@RoeeGavirel Sono il tuo primo elettore perché ho sentito il downvote essere duro. FWIW puoi superare il limite di 30 caratteri ma aggiungere un commento HTML che ho fatto in la mia prima versione della risposta! La mia modifica alla tua risposta mostra come. –
esempio completo per la fusione puntatore a oggetto
class myClass
{
public:
void sayHello()
{
cout << "Hello";
}
};
int main()
{
myClass* myPointer;
myClass myObject = myClass(* myPointer); // Cast pointer to object
myObject.sayHello();
return 0;
}
Sono stupito che onlinegdb funzioni con questo, poiché qui ci sono molti problemi. In primo luogo, myPointer non è inizializzato - dov'è il 'new myClass()'? In secondo luogo, la linea contrassegnata da // // Cast puntatore a oggetto' esegue tale operazione e quindi esegue una copia. Costruire un'altra myClass dal puntatore non inizializzato dereferenziato e quindi (a seconda del compilatore) quando viene assegnato a myClass myObject. –
- 1. passando un puntatore per riferimento in C++
- 2. convertito riferimento alla rappresentazione puntatore in C++
- 3. Perché il puntatore "this" in C++ è un puntatore e non un riferimento?
- 4. Lanciare tra il puntatore struct in C
- 5. Matrice in C e il suo puntatore
- 6. Come eseguire il marshalling int * in C#?
- 7. Come impostare il riferimento del puntatore tramite una funzione
- 8. Possiamo riassegnare il riferimento in C++?
- 9. Come passare il puntatore nullo all'API Win32 in C# .Net?
- 10. Come ottenere il puntatore a IUnknown in C#
- 11. Quando restituire un puntatore, scalare e riferimento in C++?
- 12. Motivo per passare un puntatore tramite riferimento in C++?
- 13. Inizializzazione puntatore stringa in C#
- 14. Riferimento a un puntatore
- 15. Puntatore come membro o riferimento come membro
- 16. Come evitare il puntatore nullo in View.getDrawingCache()?
- 17. #if Non eseguire il debug in C#?
- 18. come passare il riferimento dell'istanza corrente in C#
- 19. Come eseguire il ciclo di una stringa creata dal puntatore
- 20. Riferimento a riferimento in C#?
- 21. Il nome della matrice è un puntatore costante in C++?
- 22. Elimina puntatore di matrice C++ quando aumenta il puntatore?
- 23. È buona pratica restituire il puntatore dalla funzione in c?
- 24. Come posso utilizzare un puntatore "nativo" in una classe di riferimento in C++/CLI?
- 25. Come funziona il dereferenziamento del puntatore in golang?
- 26. Non consentire il prelievo di puntatore/riferimento a const a un oggetto temporaneo in C++ (senza C++ 0X)
- 27. Riferimento C++ e puntatori const in C/C++
- 28. C: Dichiara il puntatore volatile alla funzione
- 29. Differenza tra puntatore in C++ e tipo di riferimento in C#
- 30. puntatore per fare riferimento
Il titolo dice "cast [sic] riferimento al puntatore", ma la domanda inizia con un puntatore e ha bisogno di un riferimento. In che direzione è? – MSalters
@MSalters dovrebbe essere * convert *. Lo sto modificando. Ma stavo cercando qualsiasi soluzione, quindi ho citato * cast * – Dewsworld