Pergunta

Eu tentei compilar meu programa, com o Code :: Blocks (compilador GCC). E eu recebo um erro: Aqui está o arquivo fonte, reclamando:

#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

Ele reclama sobre a linha de 16 "vários tipos em uma declaração" e está me deixando louco. Eu pesquisei muito, mas a solução comum é "encontrar o ponto e vírgula em falta". E o problema é que não há nenhum ponto e vírgula em falta em tudo. É sempre apontam para a linha 16º (pelo menos após a protegida), mesmo se houver um comentário ou mesmo está além do eof (quando eu remover todos os campos para que o arquivo se tornar pequeno).

(Este problema pode ser trivial e eu pode estar cansado agora, então eu devo ter um sono. E eu espero que alguém vai me deram alguns conselhos até amanhã de manhã.)

Foi útil?

Solução

Você tem uma classe ou algum outro UDT chamado Status? E se você alterar o nome do membro para Status_?

Outras dicas

É "Status" uma macro ou de outra forma declarada / definida em um dos cabeçalhos (ou o que eles incluem)?

Eu sou um tolo ...

Code :: Blocks, por vezes, não salva o arquivo de origem antes de começar a compilar o arquivo. MSVC ++ sempre salvá-lo antes de compilação. Esse foi o verdadeiro problema.

parece que houve um algum lugar Estado macro no código. Mas não era o meu próprio tipo. Provavelmente uma macro de uma wxWidgets cabeçalho ...

O arquivo que você tem nos mostrado é uma cabeçalho arquivo. O problema que você está tendo é na linha 16 de alguns source arquivo que está #includeing que cabeçalho. você pode copiar + colar o exata mensagem de erro que você está recebendo, bem como a parte relevante do arquivo referenciado na mensagem de erro?

Há uma falta na última anterior declaração de classe, não o que está reclamando sobre-e-vírgula. O erro é provavelmente em "timer.h", mas talvez em "player.h"

Erro pode ser por causa de 2ª classe declaração para a frente não é necessária antes da definição de primeira classe.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top