类中的SDL_Surface指针变为NULL

时间:2013-01-12 09:30:09

标签: c++ pointers sdl

我加载SDL_Surface后,我自己定义的类中的SDL_Surface(Actor)返回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;

Actor.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;
}

1 个答案:

答案 0 :(得分:0)

您的SDL_DisplayFormatAlpha似乎会返回NULL

如果您在尝试转换图片之前没有调用SDL_SetVideoMode,可能会发生这种情况,请确认是这种情况。

导致NULL返回值的另一个选项是内存不足。