Pregunta

Intenté compilar mi programa, con Code :: Blocks (compilador gcc). Y recibo un error: aquí está el archivo fuente del que se queja:

#ifndef BOT_H
#define BOT_H

#include "player.h"
#include "timer.h"

class BOTS; // forward decalaration of BOTS

class BOT : public PLAYER
{
public:
    enum BotStatus{BotMoving,BotPursue,BotChasePowerup};
    enum BotMovDir{Up,Down,Left,Right,Forward,Backward};
    enum BotSkill{Easy,Normal,Hard,Expert,Insane};
protected:
    BotStatus Status;  // this is the line it complaining about
    BotMovDir CurrentMov;
    TIMER CTimer;
    bool Stucked;
    BotSkill Skill;
    VECTOR3D AimTarget;
//  VECTOR3D ShotTarget;
    PLAYER *PursueObj;
    bool SameLevel;
    BOTS *Owner;
    bool PlayerHitMe;
    void OnDamage(double dmg,const wchar_t *Shooter,bool s);
    void OnReset();
public:
    BOT(BOTS *o,const wchar_t *botname) : PLAYER(botname), PlayerHitMe(false), Status(BotMoving), Skill(Easy), Owner(o)
    {
        PlayerInit();
    }
    void SetSkill(BotSkill bs) {Skill=bs;}
    void BotControl();
    void SetSameLevel(bool s) {SameLevel=s;}
    virtual ~BOT() {}
};

#endif

Se queja sobre la línea 16 " múltiples tipos en una declaración " y me está volviendo loco. Busqué mucho en Google, pero la solución común es "encontrar el punto y coma que falta". Y el problema es que no falta ningún punto y coma. Siempre apunta a la línea 16 (al menos después de la protección) incluso si hay un comentario o incluso está más allá de la eof (cuando quito todos los campos para que el archivo se vuelva pequeño).

(Este problema puede ser trivial y ahora puedo estar cansado, así que debo dormir. Y espero que alguien me haya dado algún consejo mañana a la mañana).

¿Fue útil?

Solución

¿Tiene una clase o algún otro UDT llamado Status ? ¿Qué sucede si cambia el nombre del miembro a Status_ ?

Otros consejos

Es " Estado " ¿Una macro o declarada / definida en uno de los encabezados (o lo que sea que incluyan)?

Soy un tonto ...

Code :: Blocks a veces no guarda el archivo fuente antes de comenzar a compilar el archivo. MSVC ++ siempre lo guarda antes de compilar. Ese fue el verdadero problema.

parece que había una macro de estado en algún lugar del código. Pero no era mi propio tipo. Probablemente una macro de un encabezado de wxwidgets ...

El archivo que nos ha mostrado es un archivo header . El problema que tiene está en la línea 16 de algún archivo source que está #include en ese encabezado. ¿Puede copiar y pegar el mensaje de error exacto que está recibiendo, así como la parte relevante del archivo al que se hace referencia en el mensaje de error?

Falta un punto y coma en la última declaración de clase anterior , no de la que se está quejando. El error probablemente se encuentre en " timer.h " ;, pero tal vez en " player.h "

El error puede deberse a que la declaración de envío de segunda clase no es necesaria antes de la definición de la primera clase.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top