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 + -
显示快捷键?