Domanda

Ho provato a compilare il mio programma, con Code :: Blocks (compilatore gcc). E ottengo un errore: ecco il file sorgente di cui si lamenta:

#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

Si lamenta della sedicesima riga "più tipi in una dichiarazione" e mi sta facendo impazzire. Ho cercato su Google molto, ma la soluzione comune è "trovare il punto e virgola mancante". E il problema è che non mancano punti e virgola. Indica sempre la 16a riga (almeno dopo quella protetta) anche se c'è un commento o addirittura è oltre la soglia (quando rimuovo tutti i campi in modo che il file diventi piccolo).

(Questo problema potrebbe essere banale e potrei essere stanco ora, quindi devo dormire. E spero che qualcuno mi abbia dato qualche consiglio domani mattina.)

È stato utile?

Soluzione

Hai una classe o qualche altro UDT chiamato Status ? Cosa succede se si modifica il nome del membro in Status_ ?

Altri suggerimenti

È " Status " una macro o altrimenti dichiarata / definita in una delle intestazioni (o qualunque cosa includano)?

Sono un pazzo ...

Codice :: I blocchi a volte non salvano il file di origine prima di iniziare a compilare il file. MSVC ++ lo salva sempre prima della compilazione. Quello era il vero problema.

sembra che ci fosse una macro Status da qualche parte nel codice. Ma non era il mio tipo. Probabilmente una macro da un'intestazione di wxwidgets ...

Il file che ci hai mostrato è un file header . Il problema che stai riscontrando è sulla sedicesima riga di alcuni file sorgente che è #include nell'intestazione. Puoi copiare + incollare il messaggio di errore esatto che stai ricevendo, nonché la parte pertinente del file a cui fa riferimento il messaggio di errore?

Nell'ultimo precedente manca un punto e virgola, non quello di cui si lamenta. L'errore è probabilmente in " timer.h " ;, ma forse in " player.h "

L'errore potrebbe essere dovuto alla dichiarazione forward di seconda classe non necessaria prima della definizione della prima classe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top