button_click.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 60 行
CPP
60 行
// Boost.Signals library// Copyright Douglas Gregor 2001-2003. Use, modification and// distribution is subject to the Boost Software License, Version// 1.0. (See accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)// For more information, see http://www.boost.org#include <boost/bind.hpp>#include <boost/signals/signal1.hpp>#include <iostream>struct print_string : public boost::signals::trackable { typedef void result_type; void print(const std::string& s) const { std::cout << s << std::endl; }};struct my_button { typedef boost::signal1<void, const std::string&> click_signal_type; typedef click_signal_type::slot_type click_slot_type; boost::signals::connection on_click_connect(const click_slot_type& s) { return on_click.connect(s); } my_button(const std::string& l) : label(l) {} virtual ~my_button() {} void click();protected: virtual void clicked() { on_click(label); }private: std::string label; click_signal_type on_click;};void my_button::click(){ clicked();}int main(){ my_button* b = new my_button("OK!"); print_string* ps = new print_string(); b->on_click_connect(boost::bind(&print_string::print, ps, _1)); b->click(); // prints OK! delete ps; b->click(); // prints nothing return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?