• Miércoles 20 de Noviembre de 2024, 12:33

Autor Tema:  [SOLUCIONADO] Error en constructor de clase  (Leído 2802 veces)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
[SOLUCIONADO] Error en constructor de clase
« en: Miércoles 1 de Abril de 2009, 16:19 »
0
Error: 5 cframe.cpp new types may not be defined in a return type
Error: 5 cframe.cpp two or more data types in declaration of `cFrame'
Error: 5 cframe.cpp two or more data types in declaration of `cFrame'
Error: 5 cframe.cpp two or more data types in declaration of `cFrame'
Error: 5 cframe.cpp return type specification for constructor invalid

Código: C++
  1. //cframe.cpp
  2. #include "clases.h"
  3.  
  4. cFrame::cFrame()
  5. {
  6.     frame = NULL;
  7. }
  8.  
Código: C++
  1. //clases.h
  2. class cFrame
  3. {
  4.     private:
  5.         BITMAP *frame;
  6.    
  7.     public:
  8.         cFrame();
  9.         ~cFrame();
  10.         void obtener(BITMAP *ob_frame);    
  11.         void modificar(BITMAP *mod_frame);
  12. };
  13.  

 :wacko:  :wacko:
« última modificación: Jueves 2 de Abril de 2009, 11:58 por m0skit0 »

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Error en constructor de clase
« Respuesta #1 en: Miércoles 1 de Abril de 2009, 16:49 »
0
No esta definido BITMAP:
#include <windows.h>

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.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Error en constructor de clase
« Respuesta #2 en: Miércoles 1 de Abril de 2009, 17:00 »
0
Perdona, no he incluído toda la información...

En clases.h está:
Código: C
  1. #include <allegro.h>
  2.  

Donde sí está definido BITMAP.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Error en constructor de clase
« Respuesta #3 en: Miércoles 1 de Abril de 2009, 18:04 »
0
Bueno, no se, pero con hacer esto:
//clases.h
typedef int BITMAP;

Ya me compila en VC++ y g++ ...

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.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Error en constructor de clase
« Respuesta #4 en: Miércoles 1 de Abril de 2009, 18:34 »
0
Gracias Eternal Idol, pero me sigue sin funcionar:

Código: C++
  1. typedef int BITMAP;
  2.  
  3. ////////////////
  4. //Constructores
  5. ////////////////
  6. cFrame::cFrame()
  7. {
  8.     frame = NULL;
  9. }
  10.  
4 cframe.cpp two or more data types in declaration of `BITMAP'
4 cframe.cpp extraneous `int' ignored
276 gfx.h 'BITMAP' has a previous declaration as `typedef struct BITMAP BITMAP'

O sea que sí reconoce el tipo declarado en gfx.h BITMAP...  &lt;_&lt;  ¿Pero no reconoce "int"?  :argh:

Código: C
  1. typedef struct BITMAP            /* a bitmap structure */
  2. {
  3.    int w, h;                     /* width and height in pixels */
  4.    int clip;                     /* flag if clipping is turned on */
  5.    int cl, cr, ct, cb;           /* clip left, right, top and bottom values */
  6.    GFX_VTABLE *vtable;           /* drawing functions */
  7.    void *write_bank;             /* C func on some machines, asm on i386 */
  8.    void *read_bank;              /* C func on some machines, asm on i386 */
  9.    void *dat;                    /* the memory we allocated for the bitmap */
  10.    unsigned long id;             /* for identifying sub-bitmaps */
  11.    void *extra;                  /* points to a structure with more info */
  12.    int x_ofs;                    /* horizontal offset (for sub-bitmaps) */
  13.    int y_ofs;                    /* vertical offset (for sub-bitmaps) */
  14.    int seg;                      /* bitmap segment */
  15.    ZERO_SIZE_ARRAY(unsigned char *, line);
  16. } BITMAP;
  17.  
Me explico más en profundidad: en clases.h tengo todas las especificaciones de las clases junto con algunas cabeceras:

Código: C
  1. #include <string>
  2. #include <allegro.h>
  3. #include "tipos.h"
  4. #include "constantes.h"
  5.  
Luego por cada clase un .cpp. Pero da el error comentado en el primer post en el constructor, da igual la clase que sea -aunque no tenga BITMAP como atributo-.

Todo esto usando Dev-C++, con el enlazador configurado con -lalleg. De hecho ejemplos más sencillos sí compilan con la librería, pero con C++ ya no...

¿Es posible que se trate del orden en que g++ intenta compilarlo? Aunque no le veo mucho sentido, porque cada .cpp sólo depende de clases.h, que está incluído...  :brickwall: Adjunto clases.h y cframe.cpp por si acaso...  :mellow:
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Error en constructor de clase
« Respuesta #5 en: Miércoles 1 de Abril de 2009, 19:00 »
0
No tengo strings.h, tipos.h, constantes.h (ni allegro.h en realidad) asi que trata de editar el codigo hasta que funcione o reducilo a la minima expresion que no compile.

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.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Error en constructor de clase
« Respuesta #6 en: Jueves 2 de Abril de 2009, 10:52 »
0
Nada, nada, olvídenlo, ese error era por la falta de ; al final de la especificación de clase...  &lt;_&lt;

Volví a insertar las clases de una en una, corrigiendo los errores y ya compila.  :clown:

¡Gracias por la atención prestada!  :good:  :comp:

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Error en constructor de clase
« Respuesta #7 en: Jueves 2 de Abril de 2009, 11:12 »
0
De nada (aca en el foro el ; estaba en cFrame)  :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.

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Error en constructor de clase
« Respuesta #8 en: Jueves 2 de Abril de 2009, 11:57 »
0
Cita de: "Eternal Idol"
aca en el foro el ; estaba en cFrame
Sí, pero en el proyecto no  :ph34r:

Se me habrán traspapelado los ficheros con otros... En fin, una cuestión de "trasficherado"  ^_^