Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: class_OpenGL en 20 Abril 2016, 18:59 pm



Título: Duda sobre el typedef en las clases
Publicado por: class_OpenGL en 20 Abril 2016, 18:59 pm
Hola, hoy presento una duda corta. Si en una clase tienes diversas definiciones de tipos, si estás tratando con un objeto, ¿puedes declarar una variable fuera de la clase del tipo que está definido en el objeto?

Código de ejemplo:
Código
  1. class Foo {
  2.    public:
  3.        typedef int tipo_entero;
  4.  
  5.    private:
  6.        /* Aquí las variables de la clase */
  7. };
  8.  
  9. ...
  10.  
  11. int main() {
  12.    Foo objeto;
  13.  
  14.    objeto.tipo_entero variable = 54;
  15.  
  16.    return 0;
  17. }

Evidentemente no estaría preguntando esto pudiendo proponer el ejemplo. Al intentar compilar el código de arriba me salta el siguiente error:
Código:
main.cpp: In function 'int main()':
main.cpp:12:12: error: invalid use of 'Foo::tipo_entero'
objeto.tipo_entero variable = 54;

Pues eso, me gustaría saber si se puede hacer lo que he preguntado. Muchas gracias anticipadamente!


Título: Re: Duda sobre el typedef en las clases
Publicado por: HardForo en 20 Abril 2016, 19:07 pm
Interpreto quisiste hacer esto:

Código
  1. class Foo {
  2.    typedef int tipo_entero;
  3.  
  4.    public:
  5.     tipo_entero valor;    
  6.  
  7.    private:
  8.        /* Aquí las variables de la clase */
  9. };
  10.  
  11.  
  12. int main(void) {
  13.    Foo objeto;
  14.  
  15.    objeto.valor = 54;    
  16.  
  17.    return 0;
  18. }
  19.  

Desde el exterior, el tipo de valor es int ya que no esta declarado en ese ámbito.


Título: Re: Duda sobre el typedef en las clases
Publicado por: ivancea96 en 20 Abril 2016, 19:08 pm
Un typedef no es cosa de objeto. Es cosa de la clase.
Código
  1. Foo::tipo_entero k = 54;


Título: Re: Duda sobre el typedef en las clases
Publicado por: class_OpenGL en 20 Abril 2016, 19:14 pm
Eso quiere decir que no se puede, supongo. Gracias :D

PD.: boctulus, no, no quise decir eso xD


Título: Re: Duda sobre el typedef en las clases
Publicado por: ivancea96 en 20 Abril 2016, 19:28 pm
Eso quiere decir que no se puede, supongo. Gracias :D

PD.: boctulus, no, no quise decir eso xD

Sí, sí que se puede :/

Pero tienes que ponerlo como puse arriba. No es algo del objeto.


Título: Re: Duda sobre el typedef en las clases
Publicado por: class_OpenGL en 20 Abril 2016, 20:09 pm
Ah, si, cierto. Me refería a que no se podía con un objeto en sí, gracias :D


Título: Re: Duda sobre el typedef en las clases
Publicado por: ivancea96 en 20 Abril 2016, 20:11 pm
Ah, si, cierto. Me refería a que no se podía con un objeto en sí, gracias :D

El caso es, qué cambiaría que fuera de un objeto, o que querrías que cambiase?


Título: Re: Duda sobre el typedef en las clases
Publicado por: class_OpenGL en 21 Abril 2016, 08:38 am
El tema era el de las plantillas, cuando haces
Código
  1. template<typename T>
  2. class Foo {
  3.    public:
  4.        typedef T tipo;
  5. };

Pero supongo que no es tan necesario. Solo era curiosidad