Ventana con herencia y atributos

Basándonos en el ejemplo de una Ventana con Botón utilizando Gtk::Application, construimos una pequeña clase que encapsula el contenido visual y los manejadores requeridos.

/* vim: set et sw=4 sts=4 :
 *
 * Basado en un ejemplo de https://developer.gnome.org/gtkmm-tutorial/stable/sec-helloworld.html.en
 *
 * Se compila con:
 * g++ main.cpp $(pkg-config --cflags --libs gtkmm-3.0)
 *
 */
 #include <gtkmm/button.h>
#include <gtkmm/window.h>
#include <iostream>
 //Ventana 'custom'. Extiende Gtk::Window con un botón y su comportamiento
class CustomWindow : public Gtk::Window
{
public:
  CustomWindow();
private:
  void on_button_clicked();
  Gtk::Button boton;
};
 //Construye la ventana con un botón. Vincula el click del botón con su callback
CustomWindow::CustomWindow()
: boton("Print") //Construye el botón con el texto 'Print'
{
  set_default_size(200, 200);
  set_border_width(10);
  boton.signal_clicked().connect(sigc::mem_fun(*this,
              &CustomWindow::on_button_clicked));
  add(boton);
  boton.show();
}
 //Método de callback para el click del botón. Imprime 'Hola Mundo'
void CustomWindow::on_button_clicked()
{
  std::cout << "Hola Mundo" << std::endl;
}
 int main(int argc, char** argv)
{
   //Crea una aplicación simple para desplegar la ventana
  auto app = Gtk::Application::create(argc, argv);
   //Crea una ventana con un botón visible
  CustomWindow ventana;
  //Ejecuta la aplicación y bloquea hasta que se destruye la ventana
  return app->run(ventana);
}