& # 8220; plusieurs types dans une déclaration & # 8221; mais non ; manquant

StackOverflow https://stackoverflow.com/questions/600707

  •  03-07-2019
  •  | 
  •  

Question

J'ai essayé de compiler mon programme avec Code :: Blocks (compilateur gcc). Et je reçois une erreur: Voici le fichier source dont il se plaint:

#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

Il se plaint de la 16ème ligne "plusieurs types dans une déclaration" et ça me rend fou. J'ai beaucoup cherché sur Google, mais la solution courante est de "trouver le point-virgule manquant". Et le problème est qu’il n’ya pas de point-virgule manquant. Il pointe toujours vers la 16ème ligne (au moins après la protection) même s’il ya un commentaire ou même si c’est au-delà de la fin (quand je supprime tous les champs pour que le fichier devienne petit).

(Ce problème est peut-être anodin et je suis peut-être fatigué, je dois donc dormir. Et j'espère que quelqu'un m'aura donné des conseils demain matin.)

Était-ce utile?

La solution

Avez-vous une classe ou un autre UDT nommé Status ? Que faire si vous modifiez le nom du membre en Status _ ?

Autres conseils

Est-ce que " Statut " une macro ou autrement déclarée / définie dans l'un des en-têtes (ou ce qu'ils incluent)?

Je suis un imbécile ...

Code :: Blocks n'enregistre parfois pas le fichier source avant de commencer à le compiler. MSVC ++ le sauvegarde toujours avant la compilation. C'était le vrai problème.

il semble qu'il y ait eu une macro Status quelque part dans le code. Mais ce n'était pas mon genre. Probablement une macro d'un en-tête wxwidgets ...

Le fichier que vous nous avez montré est un fichier en-tête . Le problème que vous rencontrez se trouve à la 16ème ligne d’un fichier source qui contient #include dans cet en-tête. Pouvez-vous copier / coller le message d'erreur exact que vous recevez, ainsi que la partie pertinente du fichier référencé dans le message d'erreur?

Il manque un point-virgule dans la dernière déclaration de la classe précédente , pas celle pour laquelle il se plaint. L'erreur est probablement dans "timer.h", mais peut-être dans "player.h"

Une erreur peut être imputable à la non-nécessité de la déclaration de transmission de la 2e classe avant la première définition de la classe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top