elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  funcion en c que pueda ser llamada con parámetros de distintos tipos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: funcion en c que pueda ser llamada con parámetros de distintos tipos  (Leído 6,943 veces)
etcheverrypablol

Desconectado Desconectado

Mensajes: 37


¡Hoy mejor que ayer, mañana mejor que hoy!


Ver Perfil
funcion en c que pueda ser llamada con parámetros de distintos tipos
« en: 4 Marzo 2016, 04:29 am »

Hola gente.

Quiero crear una función que tenga parámetros que no restrinjan el tipo de dato que se la pase (ya sea int, char, etc.)

¿Cómo se hace y cómo se llama a este tipo de parámetros que no tiene un tipo en particular?

Por ejemplo:

void Sumar( tipoGenerico x, tipoGnerico y){
      return x+y;
}

Me gustaría que la función Sumar, permita pasarle como parámetro un tipo char, un tipo float o un tipo int.

Busqué en internet pero no pude encontrar nada. :-(


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: funcion en c que pueda ser llamada con parámetros de distintos tipos
« Respuesta #1 en: 4 Marzo 2016, 04:34 am »

espero te sirva

https://en.wikipedia.org/wiki/Template_(C%2B%2B)


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: funcion en c que pueda ser llamada con parámetros de distintos tipos
« Respuesta #2 en: 4 Marzo 2016, 05:25 am »

En C no existe la sobrecarga de funciones ni tampoco las plantillas, así que me temo que tu problema en C no tiene solución. En C++ puedes usar la sobrecarga de funciones o las plantillas
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
etcheverrypablol

Desconectado Desconectado

Mensajes: 37


¡Hoy mejor que ayer, mañana mejor que hoy!


Ver Perfil
Re: funcion en c que pueda ser llamada con parámetros de distintos tipos
« Respuesta #3 en: 4 Marzo 2016, 05:28 am »

Hola class, no esperaba esa respuesta.
Pensé que si se podía. Sé que en pascal no se puede, pero me pareció escuchar en clase que sí en C.
En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: funcion en c que pueda ser llamada con parámetros de distintos tipos
« Respuesta #4 en: 4 Marzo 2016, 15:48 pm »

Es una pena, pero así es. Si quieres hacer eso, vete a C++!
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: funcion en c que pueda ser llamada con parámetros de distintos tipos
« Respuesta #5 en: 4 Marzo 2016, 16:49 pm »

Si son de tipo genérico sí se puede pues C es muy vago a la hora de mirar el tipo de dato que le pasas: eso lo deja en manos del programador. Puede que los compiladores se quejen, pero con un cast explícito evitas que aparezcan los mensajes de alerta.

Creo recordar que en C++ libertades como esta desaparecen.

Código
  1. #include <stdio.h>
  2.  
  3. double suma(double a, double b) {
  4.    return a + b;
  5. }
  6.  
  7. int main() {
  8.    char cha = 2, chb = 3;
  9.    int ia = 4, ib = 5;
  10.    long la = 6, lb = 7;
  11.    float fa = 8, fb = 9;
  12.  
  13.    printf("char  : %d\n", (char)suma(cha, chb));
  14.    printf("int   : %d\n", (int)suma(ia, ib));
  15.    printf("long  : %li\n", (long)suma(la, lb));
  16.    printf("double: %f\n", suma(fa, fb));
  17.  
  18.    return 0;
  19. }
  20.  
« Última modificación: 4 Marzo 2016, 17:13 pm por MAFUS » En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: funcion en c que pueda ser llamada con parámetros de distintos tipos
« Respuesta #6 en: 4 Marzo 2016, 20:19 pm »

Si, pero realmente lo que haces es convertir, por ejemplo, un entero a double, y eso no te lo quita nadie (a quien más le importa es al procesador). Por ejemplo, no podrías pasarle un unsigned long long int, porque literalmente la parte entera no cabe en un double. Siempre vas a estar delimitado por el parámetro, mientras que en C++, usando una simple plantilla, puedes hacer esa función sin problemas (también puedes hacer sobrecarga de funciones)
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
MAFUS


Desconectado Desconectado

Mensajes: 1.603



Ver Perfil
Re: funcion en c que pueda ser llamada con parámetros de distintos tipos
« Respuesta #7 en: 4 Marzo 2016, 20:51 pm »

Eso sí es cierto. Para emular ese comportamiento C debería usar punteros a void y funciones callback. Así se tendría una función genérica para sumar cualquier tipo de dato.
En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: funcion en c que pueda ser llamada con parámetros de distintos tipos
« Respuesta #8 en: 4 Marzo 2016, 21:17 pm »

Se me ha ocurrido que se podría usar una macro:
Código
  1. #define sumar(a, b) a+b
  2.  
  3. #include <stdio.h>
  4.  
  5. int main() {
  6. char cha = 2, chb = 3;
  7.    int ia = 4, ib = 5;
  8.    long la = 6, lb = 7;
  9.    float fa = 8, fb = 9;
  10.  
  11.    printf("char  : %d\n", sumar(cha, chb));
  12.    printf("int   : %d\n", sumar(ia, ib));
  13.    printf("long  : %li\n", sumar(la, lb));
  14.    printf("double: %f\n", sumar(fa, fb));
  15. }

Es cierto que no es una función, pero realiza la operación deseada. Además, en vez de sumar podrías restar, multiplicar, dividir, sacar el módulo... vamos, un sin fin de opciones!

PD.: Te copié el código para ilustrar la macro XD.
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
etcheverrypablol

Desconectado Desconectado

Mensajes: 37


¡Hoy mejor que ayer, mañana mejor que hoy!


Ver Perfil
Re: funcion en c que pueda ser llamada con parámetros de distintos tipos
« Respuesta #9 en: 5 Marzo 2016, 16:06 pm »

MUCHAS GRACIAS POR sus respuestas.

MAFUS, veo que tu método es de una forma distinta a la que me imaginaba, pero con un casteo, cumple con lo que yo estaba buscando.

Class, tu método se acerca más a lo que yo pensaba, me gustó la idea de declarar una macro.

Queda en cada uno analizar las ventajas y desventajas de cada método. Por el momento han respondido a mi pregunta.

:-)
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Distintos tipos de sesiones.
Nivel Web
APOKLIPTICO 0 4,369 Último mensaje 15 Julio 2009, 02:11 am
por APOKLIPTICO
Función que retorna dos tipos distintos de datos.
Programación C/C++
samur88 9 7,258 Último mensaje 18 Mayo 2011, 20:52 pm
por samur88
crear arreglo con distintos tipos de datos?
Programación C/C++
.:UND3R:. 5 3,506 Último mensaje 18 Junio 2013, 12:56 pm
por pacoperico
[?][C][C++][WIN32] Utilizar zonas de memoria con distintos tipos
Programación C/C++
cgrs 9 6,851 Último mensaje 28 Mayo 2016, 23:23 pm
por ivancea96
Parametro que acepte distintos tipos de variables.
Programación C/C++
Gojira 3 4,496 Último mensaje 1 Marzo 2018, 20:45 pm
por Gojira
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines