If you decide you no longer want your code to be called whenever a signal is
emitted, you must remember the return value of connect()
, which we've been
ignoring until now.
connect()
returns a sigc::connection
object, which has a disconnect()
member method. This does just what you think it does.
Also, sigc++ 3.6 adds sigc::scoped_connection
.
A scoped connection can be constructed or assigned from a normal/unscoped sigc::connection
,
whereupon it effectively takes ownership of the connection, and will automatically disconnect()
it when the sigc::scoped_connection
is destroyed (goes out of scope) or reassigned.
This lets you tie whether a slot is called to the lifetime of a scoped connection object, e.g. as a class member,
instead of having to manually disconnect. Scoped connections can be put in containers, or made ref-counted via std::shared_ptr
.
See the sigc::scoped_connection
class documentation for examples.