1

main.cpp からのコードのスニペット

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++ forbids definition of 'handle' with no type [-fpermissive] 'int playerEntity::handle()' のプロトタイプは、クラス 'playerEntity' エラーのいずれとも一致しません: 候補は: void playerEntity::handle()。ヘッダー ファイルとクラスにまだ慣れていません。エラーを修正するにはどうすればよいですか?

4

2 に答える 2

0

交換する必要があります

playerEntity::handle()

void playerEntity::handle()
于 2013-07-19T00:27:38.550 に答える
0

書く

void playerEntity::handle()

C++ では、関数の定義で戻り値の型 (この場合は nontype void) を指定する必要があります。これは重要な型安全対策です。

ところで、おそらくplayerEntity::handle()からの定義をmain.cpp新しいファイルplayerEntity.cpp. 他のファイルも可能ですが、この定義を .xml に残す優れたプログラマはほとんどいませんmain.cpp残念ながら、実際には幸いなことに、これにより、個別のコンパイルとリンクを学習するという緊急に必要な苦痛を数時間経験することになります。

幸運を。

于 2013-07-19T00:34:28.590 に答える