// -*- c++ -*- /* Copyright 2002, The libsigc++ Development Team * Assigned to public domain. Use as you wish without restriction. */ #include #include #include #include #include #include SIGC_USING_STD(cout) SIGC_USING_STD(endl) SIGC_USING_STD(string) int foo(int i) {std::cout << "foo(int "< sig; // emit empty signal sig(0); // connect some slots before emitting & test auto-disconnection { A a; sig.connect(sigc::ptr_fun1(&foo)); sig.connect(sigc::mem_fun1(&a, &A::foo)); sig.connect(sigc::ptr_fun1(&bar)); sig(1); std::cout << sig.size() << std::endl; } // a dies => auto-disconnect std::cout << sig.size() << std::endl; sig(2); // test reference A a; std::string str("guest book"); sigc::signal sigstr; sigstr.connect(sigc::mem_fun(&a, &A::bar)); sigstr(str); std::cout << str << std::endl; // test make_slot() sig.connect(sigc::ptr_fun1(&foo)); sigc::signal sig2; sig2.connect(sig.make_slot()); sig2(3); }