menuitem.hpp

来自「深入浅出设计模式(书配套c++源代码)。包含20个设计模式的c++实现。」· HPP 代码 · 共 79 行

HPP
79
字号
#ifndef	_HFDP_CPP_VISITOR_MENUS_MENU_ITEM_HPP_#define _HFDP_CPP_VISITOR_MENUS_MENU_ITEM_HPP_namespace HeadFirstDesignPatterns {namespace Visitor {namespace Menus {class MenuItem : public MenuComponent {	private: std::string _name;	private: std::string _description;	private: double _price; 	protected: mutable std::list< Ingredient* > _ingredients;	public: MenuItem( const std::string name, const std::string description, double price ) :		_name( name ), _description( description ), _price( price ) {	}	public: void accept( Visitor* visitor ) { assert( visitor );		visitor->visit( this );		std::list< Ingredient* >::const_iterator iterator = _ingredients.begin();		while( iterator != _ingredients.end() ) {			( *iterator )->accept( visitor );			 ++iterator;		}	} 	public: void add( Ingredient* ingredient ) { assert( ingredient );		_ingredients.push_back( ingredient );	}	public: double getPrice() const {		return _price;	}	public: float getHealthRating() const {		float result = 0.0f;		std::list< Ingredient* >::const_iterator iterator = _ingredients.begin();		while( iterator != _ingredients.end() ) {			result += ( *iterator )->getHealthRating();			++iterator;		}		return result;	}	public: bool isVegetarian() const {		bool result = true;		std::list< Ingredient* >::const_iterator iterator = _ingredients.begin();		while( iterator != _ingredients.end() && true == result ) {			result = ( *iterator )->isVegetarian();			++iterator;		}		return result;	}	public: std::string toString() const {		std::stringstream result;		result << _name;		if ( true == isVegetarian() ) {			result << " (v)";		}		result << " $" << getPrice();		result << "\t";		result << _description;		//std::list< std::pair < Ingredient*, float > >::const_iterator iterator = _ingredients.begin();		//while( iterator != _ingredients.end() ) {		//	result << "\t";		//	result << ( *iterator ).first->toString();		//	result << " x " << ( *iterator ).second;		//	++iterator;		//}		return result.str();	}};} // namespace Menus} // namespace Visitor} // namespace HeadFirstDesignPatterns#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?