Resultados 1 al 4 de 4

Duda sobre C++

  1. #1 Duda sobre C++ 
    Moderador HH
    Fecha de ingreso
    Dec 2001
    Ubicación
    España
    Mensajes
    836
    Descargas
    2
    Uploads
    0
    Buenas chicos, a ver hoy me ha surgido la duda a mi, estoy probando 1 cosilla pero lo de los punteros sin tipo y yo aun no nos llevamos muy bien, planteo mi duda.

    Stoy intentando hace runa función "reserve(elem,size);", que como su nombre indica reserve size elementos para el puntero elem. El problema es q quiero que el tipo de elem sea genérico.

    Yo pensaba en principio q sería algo asi, pero claro esta q no es asi (xq no compila xD), tonces tengo q hacer casting en algún lado, no?

    void reserve(void elem,int x){
    elem = new void [x];
    }

    Bueno a ver si alguien me lo aclara un poquito q no termino de pillarle el tranquillo a esto xD.

    Un saludo,
    KaoS
    Citar  
     

  2. #2  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicación
    Galiza
    Mensajes
    3.919
    Descargas
    8
    Uploads
    1
    Kaos no entendi muy bien un par de cosas, entre ellas
    reserve(elem,size);", que como su nombre indica reserve size elementos para el puntero elem
    , porque size() devulve el tamaño de una variable y creo que tu te refieres a otra cosa.
    Pero bueno a tu pregunta de crear elementos genericos, la respuesta son las plantillas (template), un ejemplo simple del todo seria:

    //definicion de la plantilla
    template <class TIPO> //puedes definir plantillas con vaios tipos genericos,
    TIPO Max(TIPO a, TIPO b) { //pero cada tipo debe tener un nombre distinto.
    return (a > b) ? a : b; //actualmente muchos en vez de class utilizan typename
    }
    //utilizacion de la plantilla
    void main() {
    int a=5, b=10, c;
    float k=3.0, l=7.8, m;
    c=Max(a,b); //es el compilador el encargado de comvertir TIPO en entero, float, ...
    m=Max(k,l);
    }


    espero que hayas entendido mi explicacion (bueno si a esto se le puede llamar explicacion), y si no es asi admelo saber, que intentare darte una bastante mas completa, aunque te advierto que no soy ningun experto. Por cierto, si utilizas plantillas no tendras que usar casting ni nada por el estilo, ya que lo hace el compilador por ti.

    Un Saludo
    He conocido muchos dioses. Quien niegue su existencia está tan ciego como el que confía en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
    Citar  
     

  3. #3  
    Moderador HH
    Fecha de ingreso
    Feb 2002
    Ubicación
    México
    Mensajes
    1.156
    Descargas
    4
    Uploads
    0
    el problema, creo, es que este tipo de ddefinicion de una función void reserve(void elem,int x), pertenece a la programación estructurada, y esta nos dice que la funcion debe tener n variables de entrada y una de salida, las de entrada deben ser de UN tipo cada una, es decir que no puedes poner ambigüedades como "void elem", puesto que el void es usado para funciones y no para variables.

    Para esto que quieres hacer, se puede en orientación a objetos, creo que se llama polimorfismo, es decir, puedes declarar la misma funcion varias veces con diferentes variables, por ejemplo:

    class nobreDeObjeto{
    public:
    void reserve(int elem,int x);
    void reserve(float elem,int x);
    void reserve(char elem,int x);
    etc, etc.
    Citar  
     

  4. #4  
    Moderador HH
    Fecha de ingreso
    Mar 2003
    Ubicación
    Galiza
    Mensajes
    3.919
    Descargas
    8
    Uploads
    1
    Giscard, perdona, pero tu ejemplo es de funciones sobrecargadas, aunque bueno tienen mucho que ver con el polimorfismo, no son lo mismo.

    Lo que si tienes razon en que las variables (que yo sepa) no pueden ser void, aunque si las funciones (no devuelven nada) y los punteros.

    Un Saludo
    He conocido muchos dioses. Quien niegue su existencia está tan ciego como el que confía en ellos con una fe desmesurada. Robert E. Howard
    La suerte ayuda a la mente preparada.
    Citar  
     

Temas similares

  1. Duda sobre AD
    Por matapete en el foro WINDOWS
    Respuestas: 1
    Último mensaje: 21-07-2008, 22:30
  2. Duda sobre PS3
    Por MITSU en el foro CONSOLAS
    Respuestas: 1
    Último mensaje: 23-01-2008, 22:18
  3. Duda sobre la IP
    Por SooZ610 en el foro GENERAL
    Respuestas: 7
    Último mensaje: 16-01-2007, 16:48
  4. Duda sobre LNB
    Por superja en el foro DIGITAL+
    Respuestas: 2
    Último mensaje: 23-02-2006, 21:56
  5. Duda sobre XML
    Por KaoS en el foro PROGRAMACION WEB
    Respuestas: 1
    Último mensaje: 20-06-2004, 02:53

Marcadores

Marcadores