¿Cómo puedo pasar un puntero (Object *ob
) a una función cuyo prototipo es void foo(Object &)
?
Cómo lanzar/convertir puntero a referencia en C++
mundo de rocío
Llámalo así:
foo(*ob);
Tenga en cuenta que no se está realizando ningún casting aquí, como se sugiere en el título de su pregunta. Todo lo que hemos hecho es desreferenciar el puntero al objeto que luego pasamos a la función.
-
@Ricobob Eso es lo que sucede en SO muy a menudo. Las respuestas a preguntas simples que se pueden entender fácilmente a menudo obtienen muchos votos a favor. Las respuestas largas y complejas a preguntas engañosas a menudo obtienen pocos votos a favor porque los votantes no pueden juzgar fácilmente el mérito. En cuanto a la repetición, no obtuve nada debido al límite de repetición. 😉 Pero estoy totalmente de acuerdo. Desearía que las respuestas complejas obtuvieran más representantes.
–David Heffernan
16/04/2012 a las 21:42
-
¿Esto crea una copia de
ob
, o simplemente convertir (si no se convierte) el puntero en una referencia? Y siob
estabanullptr
?– Drew Noakes
15 de junio de 2014 a las 23:15
-
@Drew Simplemente elimina la referencia del puntero. Sin copia. Sin conversión. Sin elenco A continuación, el objeto se pasa por referencia a la función. Es un error si el punto es nulo.
–David Heffernan
16 de junio de 2014 a las 6:33
-
@DrewNoakes stackoverflow.com/questions/2727834/…
–David Heffernan
16 de junio de 2014 a las 10:31
-
Solo una nota : si desea tener la referencia sin pasar a la función, úsela así:
Object& objref = *ob;
– usuario13119880
6 oct 2020 a las 21:36
Roee Gavirel
foo(*ob);
No necesita emitirlo porque es el mismo tipo de objeto, solo necesita quitarle la referencia.
-
adivinar y agregar muchos … no suele ser el formato de una buena respuesta aquí (aunque es correcto en este caso), probablemente por eso obtuviste un voto negativo.
– KillianDS
16 de abril de 2012 a las 11:20
-
bhhaaa, agregué el “Supongo” porque me hizo escribir al menos 30 caracteres. esa es también la forma en que agrego el “………..”
– Roee Gavirel
16 de abril de 2012 a las 11:41
-
@RoeeGavirel Soy tu primer votante positivo porque sentí que el voto negativo fue duro. FWIW puede superar el límite de 30 caracteres pero agregando un comentario HTML que hice en ¡Mi primera versión de la respuesta! Mi edición de su respuesta muestra cómo.
–David Heffernan
16 de abril de 2012 a las 12:04
-
Las respuestas de solo código, sin explicación, están mal vistas en estos días.
– Keith M.
4 de diciembre de 2018 a las 19:44
-
@KeithM – Ese es un comentario aleatorio y -1. La respuesta se dio hace unos 6 años, además, la pregunta no preguntaba el “por qué”, solo preguntaba el “cómo”. Pero claro, añadiré una explicación.
– Roee Gavirel
5 de diciembre de 2018 a las 7:09
El título dice “cast [sic] referencia al puntero”, pero la pregunta comienza con un puntero y necesita una referencia. ¿Qué dirección es?
– MSalters
16 de abril de 2012 a las 10:56
@MSalters debería ser convertir. lo estoy editando Pero estaba buscando cualquier solución que obtuviera, así que mencioné emitir
– Mundo de rocío
16/04/2012 a las 11:00