menu.hpp
来自「深入浅出设计模式(书配套c++源代码)。包含20个设计模式的c++实现。」· HPP 代码 · 共 59 行
HPP
59 行
#ifndef _HFDP_CPP_VISTOR_MENUS_MENU_HPP_#define _HFDP_CPP_VISTOR_MENUS_MENU_HPP_namespace HeadFirstDesignPatterns {namespace Visitor {namespace Menus {class Menu : public MenuComponent { private: std::string _name; private: std::string _description; private: mutable std::vector< MenuComponent* > _menuComponents; public: explicit Menu( const std::string name, const std::string description ) : _name( name ), _description( description ) { } public: void accept( Visitor* visitor ) { assert( visitor ); visitor->visit( this ); std::vector< MenuComponent* >::const_iterator iterator = _menuComponents.begin(); while( iterator != _menuComponents.end() ) { (*iterator)->accept( visitor ); ++iterator; } } public: float getHealthRating() const { float result = 0.0f; std::vector< MenuComponent* >::const_iterator iterator = _menuComponents.begin(); while( iterator != _menuComponents.end() ) { result += (*iterator)->getHealthRating(); ++iterator; } return result; } public: void add( MenuComponent* menuComponent ) { assert( menuComponent ); _menuComponents.push_back( menuComponent ); } public: bool isVegetarian() const { bool result = true; std::vector< MenuComponent* >::const_iterator iterator = _menuComponents.begin(); while( iterator != _menuComponents.end() && true == result ) { result = (*iterator)->isVegetarian(); ++iterator; } return result; } public: std::string toString() const { std::string result( _name ); result.append( "\t" ); result.append( _description ); return result; }};} // namespace Menus} // namespace Visitor} // namespace HeadFirstDesignPatterns#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?