doc_window.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 84 行
CPP
84 行
///////////////////////////////////////////////////////////////////////////////// (C) Copyright Ion Gaztanaga 2006-2007//// Distributed under 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)//// See http://www.boost.org/libs/intrusive for documentation./////////////////////////////////////////////////////////////////////////////////[doc_window_code#include <boost/intrusive/list.hpp>using namespace boost::intrusive;//An abstract class that can be inserted in an intrusive listclass Window : public list_base_hook<>{ public: //This is a container those value is an abstract class: you can't do this with std::list. typedef list<Window> win_list; //A static intrusive list declaration static win_list all_windows; //Constructor. Includes this window in the list Window() { all_windows.push_back(*this); } //Destructor. Removes this node from the list virtual ~Window() { all_windows.erase(win_list::s_iterator_to(*this)); } //Pure virtual function to be implemented by derived classes virtual void Paint() = 0;};//The static intrusive list declarationWindow::win_list Window::all_windows;//Some Window derived classesclass FrameWindow : public Window{ void Paint(){/**/} };class EditWindow : public Window{ void Paint(){/**/} };class CanvasWindow : public Window{ void Paint(){/**/} };//A function that prints all windows stored in the intrusive listvoid paint_all_windows(){ for(Window::win_list::iterator i(Window::all_windows.begin()) , e(Window::all_windows.end()) ; i != e; ++i) i->Paint();}//...//A class derived from Windowclass MainWindow : public Window{ FrameWindow frame_; //these are derived from Window too EditWindow edit_; CanvasWindow canvas_; public: void Paint(){/**/} //...};//Main functionint main(){ //When a Window class is created, is automatically registered in the global list MainWindow window; //Paint all the windows, sub-windows and so on paint_all_windows(); //All the windows are automatically unregistered in their destructors. return 0;}//]
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?