entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

2votos

¿Cómo devolver diferentes tipos de datos en una función?

Hola!

Tengo una función en la que pido unos datos al usuario (int, char y float) y quiero utilizarlos en otra función del main().

Es posible hacer return de diferentes tipos de datos?
Deben usarse apuntadores?
O pido los datos directamente en el main()?

Gracias!

3 Respuestas

1voto

kaiba78987 Puntos2300

Hola.

Como te han dicho, no se pueden devolver varios tipos de datos en una función, a menos que devuelvas algún tipo de estructura compleja.

Ahora bien, hay una manera de apañar lo que quieres hacer. Puedes declarar 3 variables en tu main para almacenar las respuestas del usuario y pasárselas por referencia a la función que recoge dichas respuestas. Al ser pasadas por referencia y no por valor, los cambios que hagas en ellas se mantendrán después en la función main y podrás usarlas para lo que quieras.

Espero que esto te ayude :)

0voto

daniel_uribe_ayvar comentado

Corrijanme si me equivoco, tiene un buen rato que no programo en c/c++, pero acaso este problema no podía ser resuelto con templates?

2votos

Leonardo-Tadei Puntos227320

Hola Carlos,

no se puede hacer esto en C o C++ (ni en ningún lenguaje fuertemente tipado), porque en la definición de la función tenés que declarar el tipo de dato que devuelve.

Sí podrías hacer que la función devuelva un vector o un struct, y cargar en esta estructura cada elemento de la salida... es más limpio y con mejor semántica que usar punteros, porque de usarlos tenés que rsolver luego cómo saber de qué tipo de datos es lo que está siendo aputnado.

Saludos!

0voto

S0lRaK comentado

La verdad que no soy partidario de apuntadores, que como bien dices, se ven sucios y liosos...
Gracias por la aclaración, ya que los structs los tenía en cuenta, pero dudaba si podía especificar varios tipos de datos de devolución en una única función, tal como void, int, etc.

0voto

Leonardo-Tadei comentado

Hola Carlos,

no aclarás bien qué cosas querés devolver, pero si por ejemplo definís un struct llamada "respuesta" que esté formada por un int, un char y un float, luego definís la función para que del tipo:

respuesta function nombre_funcion(....){
// implementacion
}

y al devolver el struct la función, puede contener las respuestas que te hagan falta.

Saludos!

0voto

Leonardo-Tadei comentado

Hola Carlos,

después de un tiempo prudencial, recuerda elegir alguna de las respuestas o poner tu propia solución y marcarla como "seleccionada", así el tema queda cerrado.

Saludos!

1voto

Como ya han comentado las opciones son: struct, variables por referencia o, por qué no, tener funciones diferentes para recuperar esa información. Es decir, si necesitas un int, un float y una cadena podrías tener tres funciones diferentes para pedir la información apropiada al usuario.

Otra alternativa más que se me ocurre aunque no soy muy partidario de ella es hacer uso de pares en C++ con lomque podrías crear un par que contenga un tipo de dato y otro par con los otros dos datos, pero como digo es una solución poco elegante en comparación con hacer una estructura.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta