• Viernes 15 de Noviembre de 2024, 06:43

Autor Tema:  Pregunta Acerca De Plantillas  (Leído 880 veces)

micky_19801

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Pregunta Acerca De Plantillas
« en: Viernes 8 de Julio de 2005, 22:51 »
0
>Hola quisiera saber si alguien puede ayudarme con el siguiente problema:
Escribir una plantilla para una clase que sirva para guardar 2 valores, que puedan ser de cualquier tipo. La clase debe tener un constructor para inicializar los valores de la clase y un método para mostrar los dos valores de la siguiente forma: { valor1, valor2 }.
Escribe después una función main que cree objetos de la clase de tipo char y de tipo double y llama a la función para mostrar los objetos

Lo que he hecho es lo siguiente, lo estoy haciendo con clases, pero por ahi me marca 2 errores y no se como corregirlos, les mando lo que he hecho y los errores marcados, ojala puedan ayudarme, cabe aclarar que estoy programando en borland C++. y el archivo se llama temp2.cpp

#include "iostream.h"
#include "conio.h"
template <class T>
class lista
{
public : lista();
         void agregar(T n1,T n2);
         void muestra();
         void setN(T n1,T n2);
         T getN1();
         T getN2();
private : T v1;
          T v2;

};
template <class T>
lista<T>::lista()
{
v1=1;v2=2;
}
template <class T>
lista<T>::agregar(T n1, T n2)
{
v1=n1;v2=n2;
}
template <class T>
lista<T>::T getN1()
{
return v1;
}

template <class T>
lista<T>::T getN2()
{
return v2;
}
template <class T>
lista<T>::T setN(T n1,T n2)
{
v1=n1;v2=n2;
}
template <class T>
lista<T>::muestra()
{
cout<<"\nv1="<<v1<<" v2="<<v2;
}

int main()
{
int a=12,b=5;
//long d=456565659,e=5465468;
//double g=365.56, h=123.56;
lista<int> listaint;
//listaint.agregar(a,B);
//listaint.muestra();
//getche();
return 0;
}

Errores que me manda:

temp2.cpp(23,1):'lista<int>::agregar(int,int)' is not a member of 'lista<int>'
temp2.cpp(44,1):'lista<int>::muestra()' is not a member of 'lista<int>'

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Pregunta Acerca De Plantillas
« Respuesta #1 en: Sábado 9 de Julio de 2005, 11:54 »
0
El problema esta en el tipo de datos de retorno, estas confundiendo la sintaxis y en algunos casos no especificando el tipo de retorno como en este:

Código: Text
  1.  
  2. template &#60;class T&#62;
  3. void lista&#60;T&#62;::agregar(T n1, T n2)
  4. {
  5.   v1 = n1;
  6.   v2 = n2;
  7. }
  8.  
  9.  

El codigo asi funciona:

Código: Text
  1. #include &#60;iostream&#62;
  2. #include &#60;stdio.h&#62;
  3.  
  4. using namespace std;
  5.  
  6. template &#60;class T&#62;
  7. class lista
  8. {
  9.   public :
  10.     lista();
  11.     void agregar(T n1,T n2);
  12.     void muestra();
  13.     void setN(T n1,T n2);
  14.     T getN1();
  15.     T getN2();
  16.   private:
  17.     T v1;
  18.     T v2;
  19. };
  20.  
  21. template &#60;class T&#62;
  22. lista&#60;T&#62;::lista()
  23. {
  24.   v1 = 1;
  25.   v2 = 2;
  26. }
  27.  
  28. template &#60;class T&#62;
  29. void lista&#60;T&#62;::agregar(T n1, T n2)
  30. {
  31.   v1 = n1;
  32.   v2 = n2;
  33. }
  34.  
  35. template &#60;class T&#62;
  36. T lista&#60;T&#62;::getN1()
  37. {
  38.   return v1;
  39. }
  40.  
  41. template &#60;class T&#62;
  42. T lista&#60;T&#62;::getN2()
  43. {
  44.   return v2;
  45. }
  46.  
  47. template &#60;class T&#62;
  48. void lista&#60;T&#62;::setN(T n1,T n2)
  49. {
  50.   v1 = n1;
  51.   v2 = n2;
  52. }
  53.  
  54. template &#60;class T&#62;
  55. void lista&#60;T&#62;::muestra()
  56. {
  57.   cout &#60;&#60; &#34;&#092;nv1=&#34; &#60;&#60; v1 &#60;&#60;&#34; v2=&#34; &#60;&#60; v2;
  58. }
  59.  
  60. int main()
  61. {
  62.   int a = 12, b = 5;
  63.   lista&#60;int&#62; listaint;
  64.   listaint.agregar(a, b);
  65.   listaint.muestra();
  66.   return 0;
  67. }
  68.  
  69.  

 :whistling:  :smartass:  :ph34r:

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.