SDL_Surface をロードした後、独自に定義したクラス Actor 内の SDL_Surface が NULL に戻ります。多くのコンソール出力の後、GDB を使用してエラーの可能性がある場所を見つけます。Actor クラスには SDL_Surface へのポインタが含まれており、Actor::getSurface は SDL_Surface へのポインタを返します。
もちろん、より多くのコードを表示することが問題の解決に役立つと思われます。喜んで共有させていただきます。
私のプログラムの出力は次のとおりです。
--Surface was loaded.
Surface is NULL after loading.
コードの重要でない部分を切り取りました。
main.cpp:
SDL_Init( SDL_INIT_EVERYTHING );
Actor sprite;
sprite.loadSurface("images/bg.bmp");
if( sprite.getSurface() == NULL )
std::clog << "Surface is NULL after loading." << std::endl;
アクター.cpp
bool Actor::loadSurface(std::string t_filename)
{
std::clog << "-ACTOR " << m_id << " LOADSURFACE" << std::endl;
SDL_Surface * loadedImage = NULL;
m_surface = NULL;
loadedImage = IMG_Load( t_filename.c_str() );
if( loadedImage != NULL )
{
std::clog << "--Surface was loaded." << std::endl;
m_surface = SDL_DisplayFormatAlpha( loadedImage );
SDL_FreeSurface( loadedImage );
return true;
}
std::clog << "--Surface was not loaded." << std::endl;
return false;
}