【问题标题】:player.cpp(6): error C2143: syntax error : missing ';' before '.'player.cpp(6):错误 C2143:语法错误:缺少 ';'前 '。'
【发布时间】:2014-08-05 14:19:09
【问题描述】:

不知何故,我只是不断收到此错误:

player.cpp(6):错误 C2143:语法错误:缺少 ';'在'。'之前

这是头文件

    #ifndef Enemy
    #define Enemy
    #include "SDLGameObject.h"
    class Enemy : public SDLGameObject

    {
      public:
         Enemy(const LoaderParams* pParams): SDLGameObject(pParams) {}
         void draw();
         void update();
         void clean() {}
    };
    #endif

$这里是 Enemy.cpp 文件:

    #include "Enemy.h"
    void Enemy::draw()
    {
       SDLGameObject.draw();
    }

    void Enemy::update()
    {
       m_x -= 1;
       m_currentFrame = int(((SDL_GetTicks() / 100) % 6));
    }

$这里是 SDLGameObject.h,它是 Enemy 的基类

    #ifndef __SDLGameObject__
    #define __SDLGameObject__
    #include "GameObject.h"
    #include <string>

    class SDLGameObject : public GameObject
    {
      public:
         SDLGameObject(const LoaderParams* pParams);

         virtual void draw();

         virtual void update();
         virtual void clean();

      protected:
         int m_x;
         int m_y;

         int m_width;
         int m_height;

         int m_currentRow;
         int m_currentFrame;

         std::string m_textureID;
     };

     #endif

而GameObject.h只是SDLGameObject.h的抽象基类

我不确定是否包含它,但似乎错误在于 Enemy.cpp 文件。

非常感谢您的帮助,因为我在这方面还很陌生。谢谢大家:)))

【问题讨论】:

  • 您已将Enemy 定义为空。你的班级将如何工作?在另一个文件中,您使用reserved identifier
  • #define Enemy 然后你使用 Enemy。尝试#define ENEMY_H 或您不想使用的其他名称。
  • 根据您的编译器,您可能可以用#pragma once 替换标头保护。取决于您是否关心其他编译器,因为它不是普遍支持的。

标签: c++ syntax


【解决方案1】:

一旦预处理器完成它的工作,编译器就会得到SDLGameObject.h的全部内容和行

`class : public SDLGameObject`

紧随其后的是所有其他位。这是因为预处理器已将 Enemy 替换为空白文本,因为您的行 #define Enemy。这就是为什么您的编译器会发出一些虚假错误。

要补救,请使用

#ifndef Enemy_h
#define Enemy_h

改为。

【讨论】:

  • 另外,考虑使用全大写的#define 标头保护——例如,#ifndef ENEMY_H。这有助于避免名称与所有大小写混合的标识符发生冲突。
猜你喜欢
  • 2011-05-17
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多