【问题标题】:SDL C++ Class Function ErrorSDL C++ 类函数错误
【发布时间】:2013-07-19 00:25:20
【问题描述】:

我的 main.cpp 代码的 sn-p

playerEntity::handle()
{
    if( event.type == SDL_KEYDOWN )
    {
            switch( event.key.keysym.sym )
            {
                    case SDLK_q:
                            running = false;
                            paused = true;
                            break;
                    case SDLK_ESCAPE:
                            paused = !paused;
                            break;
            }
    }

    if( keystate[SDLK_UP] )
    {
            if( isJumping == false && isFreeFalling == false )
            {
                    isJumping = true;
            }
    }
    if( keystate[SDLK_LEFT] )  player.hitbox.x--;
    if( keystate[SDLK_RIGHT] ) player.hitbox.x++;
    if( player.hitbox.x < 0 ) {player.hitbox.x = 0;}
    else if( player.hitbox.x > screen.WIDTH - player.hitbox.w ) {player.hitbox.x = screen.WIDTH - player.hitbox.w;}
    if( player.hitbox.y < 0 ) {player.hitbox.y = 0;}
    else if( player.hitbox.y > screen.HEIGHT - player.hitbox.h ) {player.hitbox.y = screen.HEIGHT - player.hitbox.h;}
}

playerEntity 在头文件中定义:

#ifndef PLAYERENTITY_H
#define PLAYERENTITY_H

class playerEntity
{
    private:
            int jumpHeight;
            int jump;
            bool isJumping;
            bool isFalling;
            bool isFreeFalling;
            SDL_Event event;
            Uint8 *keystate;
    public:
            playerEntity();
            void jump();
            void handle();
            void fall();
            int health;
            int damage;
            SDL_Rect hitbox;
            bool evolved;
};

#endif

当我尝试编译时,我得到了错误: ISO c++ 禁止声明没有类型的“句柄”[-fpermissive] “int playerEntity::handle()”的原型与“playerEntity”类中的任何内容都不匹配 错误:候选人是:void playerEntity::handle()。 我还是头文件和类的新手,如何修复错误?

【问题讨论】:

    标签: c++ class sdl


    【解决方案1】:

    你应该替换

    playerEntity::handle()
    

    void playerEntity::handle()
    

    【讨论】:

      【解决方案2】:

      void playerEntity::handle()
      

      C++ 要求在函数定义中提及返回类型(在本例中为非类型 void),这是一种重要的类型安全措施。

      顺便说一句,您可能应该将playerEntity::handle() 的定义从main.cpp 移动到一个新文件playerEntity.cpp。其他文件也是可能的,但很少有优秀的程序员会在main.cpp 中留下这个定义。不幸的是——好吧,实际上很幸运——这会让你经历几个小时的学习单独编译和链接的迫切需要的痛苦。

      祝你好运。

      【讨论】:

        猜你喜欢
        • 2018-09-25
        • 2014-12-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-27
        • 1970-01-01
        相关资源
        最近更新 更多