Ayuda con templates en C++

Discusión cerrada
  1. #1
    Avatar de The Wicker Man
    Registración
    Sep 2004
    Mensajes
    1,077

    Ayuda con templates en C++

    Recurro a ustedes para ver si me pueden solucionar un problema que tengo con un tp en el que hay que implementar templates. El tp consiste en implementar una clase Sistema (de ecuaciones) que a traves de una funcion calcule la solucion del sistema. La clase Sistema tiene como atributos una matriz tipo Matriz (clase Matriz) y un vector tipo Vector. El tp ya esta terminado, pero lo unico que falta es implementar las clases Matriz y Vector con templates y ahi surgen los problemas de compilacion. Lo que lei y me enseñaron es que para implementar una clase con template hay que definir antes de la clase:

    //Clase.h
    template <class T>
    class Clase{
    T atributo1;
    (...)
    }

    Cuando quiero instanciar un objeto de esa clase con T = int hago
    Clase <int> objeto;

    La pregunta es la siguiente. En otra clase Clase2, que tiene un atributo del tipo de Clase, como me refiero a esa clase, que usa templates?
    Si lo hago asi me dice que Clase no es un tipo

    //Clase2.h
    class Clase 2{
    Clase atributo1;
    }

    Y si hago asi me dice que T no esta definido en el scope

    //Clase2.h
    class Clase 2{
    Clase<T> atributo1;
    }

    Tambien el problema lo tengo en el constructor de Clase2, que recibe un tipo Clase:
    Clase2(Clase&);
    si lo dejo asi, supongamos que en el main defino
    Clase <float> objeto;
    Clase2(objeto);

    me dice que no encuentra el constructor que recibe Clase2(Clase<float>&).

    Por otro lado, me exigen tener las definiciones de las clases en archivos .h separados, la implementacion de las funciones de cada clase en un .cpp respectivo y luego tener el main.cpp aparte.

    Como tendria que ser la sintaxis para que esto ande?

    Muchas gracias
    • Me gusta
    Me gusta
    "Cuando la vida te dé la espalda, mandale blas bit..."

    Citar Mensaje original enviado por Kirk_hammet Ver Mensaje
    Tomatela puto reprimido no me gusta floyd ni los beatles seguro escuchas floyd porque es en el unico lugar donde vas a escuchar a una mina gimiendo virgo
    :facepalm: x10
     

  2. Compartí este Tema:
    • Vistas: 1134
    • Mensajes: 2
    Seguí este Tema: Suscribite
  3. #2
    Avatar de sidpunk77
    Registración
    Jan 2004
    Mensajes
    11,101
    Ubicación
    Street, Bs As

    Re: Ayuda con templates en C++

    Hay un subforo de programación, fijate que ahí seguro te dan una mano.

    Está dentro del subforo de software.
    • Me gusta
    Me gusta
    En 3dgames me acusan de Kirchnerista.
    En Facebook me acusan de Macrista.

    La verdad de los chicos PRO/Cambiemos de 3dg es que les chupa un huevo la corrupción, etc. Van a hacerse los giles siempre porque lo único que quieren es un gobierno que les de privilegios a su clase social.
     

  4. #3
    algo sobre vos Avatar de BroS
    Registración
    May 2000
    Mensajes
    7,667
    Ubicación
    Argentina

    Re: Ayuda con templates en C++

    Citar Mensaje original enviado por The Wicker Man Ver Mensaje
    Recurro a ustedes para ver si me pueden solucionar un problema que tengo con un tp en el que hay que implementar templates. El tp consiste en implementar una clase Sistema (de ecuaciones) que a traves de una funcion calcule la solucion del sistema. La clase Sistema tiene como atributos una matriz tipo Matriz (clase Matriz) y un vector tipo Vector. El tp ya esta terminado, pero lo unico que falta es implementar las clases Matriz y Vector con templates y ahi surgen los problemas de compilacion. Lo que lei y me enseñaron es que para implementar una clase con template hay que definir antes de la clase:

    //Clase.h
    template <class T>
    class Clase{
    T atributo1;
    (...)
    }

    Cuando quiero instanciar un objeto de esa clase con T = int hago
    Clase <int> objeto;

    La pregunta es la siguiente. En otra clase Clase2, que tiene un atributo del tipo de Clase, como me refiero a esa clase, que usa templates?
    Si lo hago asi me dice que Clase no es un tipo

    //Clase2.h
    class Clase 2{
    Clase atributo1;
    }

    Y si hago asi me dice que T no esta definido en el scope

    //Clase2.h
    class Clase 2{
    Clase<T> atributo1;
    }

    Tambien el problema lo tengo en el constructor de Clase2, que recibe un tipo Clase:
    Clase2(Clase&);
    si lo dejo asi, supongamos que en el main defino
    Clase <float> objeto;
    Clase2(objeto);

    me dice que no encuentra el constructor que recibe Clase2(Clase<float>&).

    Por otro lado, me exigen tener las definiciones de las clases en archivos .h separados, la implementacion de las funciones de cada clase en un .cpp respectivo y luego tener el main.cpp aparte.

    Como tendria que ser la sintaxis para que esto ande?

    Muchas gracias
    mucho c++ no manejo, pero el problema que tenes es que cuando usas algo de la clase "Clase" (podrias empezar por ponerle nombres mas felices) al ser un template tenes que ponerle el tipo en el cual se instancia. no podes hacer esto:

    //Clase2.h
    class Clase 2{
    Clase atributo1;
    }

    porque directamente no le pones ningun tipo.....y tampoco podes hacer eso:

    //Clase2.h
    class Clase 2{
    Clase<T> atributo1;
    }

    porq T ahi no existe, no es ningun tipo.


    El otro problema que mencionas te pasa lo mismo:

    Clase2(Clase&);

    ahi estas usando Clase sin parametrizar.

    Por lo que decis estas intentando definir dos clases, Matriz y Vector. Asumo que Vector es tu clase parametrica "Clase" y la Matriz es la "Clase2" y queres enchufarle los vectores a la matriz (o sea q la matriz sea una coleccion de vectores). Mas alla de los problemas que tenes, me parece q conceptualmente está mal. Un vector es una matriz, hace la clase paramatrica matriz y listo, olvidate del vector.
    • Me gusta
    Me gusta
     

Discusión cerrada

Temas Similares

  1. Ayuda para configuracion de Templates...
    By UrUsss in forum Rol y Estrategia
    Mensajes: 31
    Último Mensaje: 17-07-08, 04:08 PM