#include class Base : virtual public sigc::trackable { }; class Base2 { public: virtual ~Base2() {} }; class Derived : virtual public Base, public Base2 { public: void method() {} }; int main(int argc, char **argv) { Derived *instance = new Derived(); sigc::slot handler = sigc::mem_fun(instance, &Derived::method); sigc::slot param = sigc::bind(sigc::slot(), sigc::ref(*instance)); sigc::slot ret = sigc::bind_return(sigc::slot(), sigc::ref(*instance)); delete instance; return 0; }