Duda sobre el typedef en las clases

Iniciado por class_OpenGL, 20 Abril 2016, 18:59 PM

0 Miembros y 1 Visitante están viendo este tema.

class_OpenGL

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 (cpp) [Seleccionar]
class Foo {
    public:
        typedef int tipo_entero;
   
    private:
        /* Aquí las variables de la clase */
};

...

int main() {
    Foo objeto;
   
    objeto.tipo_entero variable = 54;
   
    return 0;
}


Evidentemente no estaría preguntando esto pudiendo proponer el ejemplo. Al intentar compilar el código de arriba me salta el siguiente error:
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!

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

HardForo

#1
Interpreto quisiste hacer esto:

Código (cpp) [Seleccionar]

class Foo {
   typedef int tipo_entero;

   public:
    tipo_entero valor;    

   private:
       /* Aquí las variables de la clase */
};


int main(void) {
   Foo objeto;

   objeto.valor = 54;    

   return 0;
}


Desde el exterior, el tipo de valor es int ya que no esta declarado en ese ámbito.
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

ivancea96

Un typedef no es cosa de objeto. Es cosa de la clase.
Código (cpp) [Seleccionar]
Foo::tipo_entero k = 54;

class_OpenGL

Eso quiere decir que no se puede, supongo. Gracias :D

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

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

ivancea96

Cita de: 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

Sí, sí que se puede :/

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

class_OpenGL

Ah, si, cierto. Me refería a que no se podía con un objeto en sí, gracias :D

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

ivancea96

Cita de: 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

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

class_OpenGL

El tema era el de las plantillas, cuando haces
Código (cpp) [Seleccionar]
template<typename T>
class Foo {
    public:
        typedef T tipo;
};


Pero supongo que no es tan necesario. Solo era curiosidad

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