Cita: SDL_Surface *load_image( std::string filename )<---------------------------------------------------
Es bastante sencillo.
Ahi creas una función con el nombre
load_image
La funcion acepta un solo parametro del tipo
string que esta definido en el espacio de nombres
std.
La funcion regresa un puntero hacia una estructura de tipo
SDL_Surface.
Despues de eso se define el comportamiento de la funcion.
Ahora para la segunda linea
Cita: loadedImage = SDL_LoadBMP( filename.c_str() ); <------------------------------------
loadedImage es una variable de tipo puntero que debe apuntar a una estructura SDL_Surface.
Entonces, se usa la funcion
SDL_LoadBMP que es parte de las funciones de la libreria SDL (para saber como funciona ve la documentacion de SDL).
Y
filename.c_str() es.....
Bueno, expliquemos un poco.
Quedamos que filename es el parametro de tipo string.
String es una clase, asi que en realidad filename resulta un objeto( o instancia de la clase string)
Ok, la clase string tiene métodos( o funciones que actuan dentro de los datos de la clase).
c_str() es un metodo, que la verdad nunca lo he usado y no estoy seguro para que sirva, pero por como se ve, me imagino que ha de regresar una cadena de tipo char a partir de los datos dentro del objeto filename.
Y basicamente eso es lo que hace ese par de lineas.
Que la verdad, no deberias ni siquiera preocuparte, la funcion resuelve los problemas y tu solo la usas.
Saludos