libsigc++
3.6.0
|
Slots are type-safe representations of callback methods and functions. More...
Classes | |
class | sigc::slot< T_return(T_arg...)> |
Converts an arbitrary functor to a unified type which is opaque. More... | |
class | sigc::slot_base |
Base type for slots. More... | |
Slots are type-safe representations of callback methods and functions.
A slot can be constructed from any function object or function, regardless of whether it is a global function, a member method, static, or virtual.
Use the sigc::mem_fun() or sigc::ptr_fun() template functions to get a sigc::slot, like so:
or
or, in gtkmm,
The compiler will complain if SomeClass::somemethod, etc. have the wrong signature.
You can also pass slots as method parameters where you might normally pass a function pointer.
See sigc::mem_fun() about deriving from sigc::trackable to prevent member methods from being called after the instance has been destroyed.
sigc::mem_fun() and sigc::ptr_fun() return functors, but those functors are not slots.
is not equivalent to
If you don't explicitly use a sigc::slot then the slot could call a method on an instance after it has been destroyed even if the method is in a class that derives from sigc::trackable.
A C++11 lambda expression is a functor (function object). It is automatically wrapped in a slot, if it is connected to a signal.
If you connect a C++11 lambda expression or a std::function<> instance to a signal or assign it to a slot, if your functor contains references to sigc::trackable derived objects, those objects will not be tracked, unless you also use sigc::track_obj().