"أنواع متعددة في إعلان واحد" ولكن لا؛مفتقد
سؤال
حاولت تجميع برنامجي باستخدام Code::Blocks (مترجم gcc).وأحصل على خطأ:هذا هو الملف المصدر الذي تشكو منه:
#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
إنه يشكو من السطر السادس عشر "أنواع متعددة في إعلان واحد" وهو يقودني إلى الجنون.لقد بحثت كثيرًا في Google، لكن الحل الشائع هو "العثور على الفاصلة المنقوطة المفقودة".والمشكلة هي أنه لا توجد فاصلة منقوطة مفقودة على الإطلاق.يشير دائمًا إلى السطر السادس عشر (على الأقل بعد المحمية) حتى لو كان هناك تعليق أو حتى يتجاوز eof (عندما أقوم بإزالة جميع الحقول حتى يصبح الملف صغيرًا).
(قد تكون هذه المشكلة تافهة وقد أكون متعباً الآن، لذا يجب أن أنام.وآمل أن يقدم لي شخص ما بعض النصائح بحلول صباح الغد.)
المحلول
هل لديك فئة أو بعض UDT آخر يدعى Status
؟ ماذا لو قمت بتغيير اسم العضو الذي Status_
؟
نصائح أخرى
هل "Status
" ماكرو أو غير ذلك أعلن / تعريفها في واحدة من رؤوس (أو أيا كانت تشمل)؟
وأنا أحمق ...
ورمز :: كتل أحيانا لا يحفظ الملف المصدر قبل البدء بجمع الملف. MSVC ++ حفظ دائما قبل ترجمة. وكان هذا هو المشكلة الحقيقية.
وعلى ما يبدو كان هناك في مكان ما الكلي الحالة في التعليمات البرمجية. لكنه لم يكن نوع بلدي. ربما ماكرو من رأس كويدغيتس ...
الملف الذي أظهرته لنا هو header ملف.المشكلة التي تواجهها هي في السطر السادس عشر لدى البعض مصدر الملف الذي هو #include
في هذا الرأس.هل يمكنك نسخ + لصق بالضبط رسالة الخطأ التي تتلقاها، بالإضافة إلى الجزء ذي الصلة من الملف المشار إليه في رسالة الخطأ؟
وهناك منقوطة في عداد المفقودين في الماضي <م> السابق م> تعريف فئة، وليس واحدة انها تشكو. الخطأ هو على الارجح في "timer.h"، ولكن ربما في "player.h"
قد يكون خطأ بسبب إعلان الأمام الطبقة 2ND ليست هناك حاجة قبل تعريف من الدرجة الأولى.