Il problema dovrebbe essere questa riga (che mi era sfuggita prima):
codice:
class Button
{
private:
	Image img( [definizione del costruttore] ); 
public:
	Button( Image img )
	{
		this->img = img;
	}
	
	void draw( void )
	{
		this->img.draw();
	}
};
Non è possibile inizializzare un oggetto in quel modo all'interno di una classe.
O risolvi utilizzando la constructor list initializer (è necessario che la classe abbia il costruttore di default)
codice:
Button( [parametri da passare al costruttore di image ] ) : img([parametri da passare al costruttore di image ]
	{ }
oppure sei costretto a usare un puntatore (meglio uno smart pointer)
codice:
class Button
{
private:
	Image* img;

Button( Image im ) : img (new Image) {
   *this->img = im;
}
etc...
La classe Image l'hai scritta tu immagino (nella doc di SDL qui: http://jcatki.no-ip.org:8080/SDL_ima...age_frame.html non vedo classi)