0

簡単にするために、現在取り組んでいるプロジェクト用に独自の関数を作成したいと思いました。残念ながら、それは閉じ続けました。エラーチェックの後、何もロードできないことが原因であることがわかりました。関数は次のとおりです。

//SDL
void IMG_HANDLER::loadImage(const char * file, SDL_Surface *imgSRC)
{
    imgSRC = SDL_LoadBMP(file);

    if (imgSRC == NULL)
    {
        printf("Couldn't load IMG \n", stderr);
        exit(1);
    }
}


void IMG_HANDLER::SetImage(int x, int y, const char *file, SDL_Surface *dest, SDL_Surface *imgSRC)
{

loadImage(file, imgSRC);
    SDL_Rect offset;
    offset.x=x;
    offset.y=y;


    SDL_BlitSurface(imgSRC,NULL,dest, &offset);

}

//SFML

bool SpriteLoad::LoadSprite(std::string filename)
{
    if (!Image.LoadFromFile(filename.c_str()))
    {
        printf("Can't load image file", stderr);

        exit(1);
        return false;
    }
    Sprite.SetImage(Image);
    return true;
}

特にコードが完全にコンパイルされた場合、私はかなり混乱しています。これを修正するにはどうすればよいですか?

4

1 に答える 1

1

今のところSFMLコードを無視すると、1つの問題は

//SDL
void IMG_HANDLER::loadImage(const char * file, SDL_Surface *imgSRC)
{
    imgSRC = SDL_LoadBMP(file);

    if (imgSRC == NULL)
    {
        printf("Couldn't load IMG \n", stderr);
        exit(1);
    }
}

の値はimgSRC決して離れませんloadImage。代わりに参照を作成imgSRCするか、から値を返すことをお勧めしますloadImage。あれは:

void IMG_HANDLER::loadImage(const char * file, SDL_Surface* &imgSRC)

また:

SDL_Surface *IMG_HANDLER::loadImage(const char * file)

この質問は最近尋ねられたものであり、その振る舞いを説明する必要があります。

両方とも機能しない限り、画像ファイルが適切な形式であることを確認することをお勧めします。

于 2012-04-08T21:44:59.330 に答える