本文来自http://blog.csdn.net/runaying ,引用必须注明出处!
cocos2d-x节点(CCDataVisitor.h)API
温馨提醒:为了大家能更好学习,强烈推荐大家看看本人的这篇博客 Cocos2d-X权威指南笔记
根据你的多态对象类型帮助你执行动作
///\cocos2d-x-3.0alpha0\cocos2dx\cocoa //根据你的多态对象类型帮助你执行动作 #ifndef __CCDATAVISITOR_H__ #define __CCDATAVISITOR_H__ #include "platform/CCPlatformMacros.h" #include <string> NS_CC_BEGIN class Object; class Bool; class Integer; class Float; class Double; class String; class Array; class Dictionary; class Set; class Data; /** * @addtogroup data_structures * @{ */ /** * 根据你的多态对象类型帮助你执行动作 * *用例: * - 序列化的数据 * - 打印漂亮的对象 * - 安全读取 Array, Dictionary, Set * * 用途: * 1. DataVisitor 的子类 * 2. 你需要执行的对象 overload visit() 方法 * 3. 在 visitObject() 处理其它对象 * 4. 使用 Object::acceptVisitor() 通过你的 visitor */ class CC_DLL DataVisitor { public: /** * @js NA * @lua NA */ virtual ~DataVisitor() {} /** 默认的方法,可以称为 non-overloaded 方法 and 不能识别的对象 */ virtual void visitObject(const Object *p) = 0; virtual void visit(const Bool *p); virtual void visit(const Integer *p); virtual void visit(const Float *p); virtual void visit(const Double *p); virtual void visit(const String *p); virtual void visit(const Array *p); virtual void visit(const Dictionary *p); virtual void visit(const Set *p); virtual void visit(const Data *p); }; class CC_DLL PrettyPrinter : public DataVisitor { public: PrettyPrinter(int indentLevel = 0); virtual void clear(); virtual std::string getResult(); virtual void visitObject(const Object *p); virtual void visit(const Bool * p); virtual void visit(const Integer *p); virtual void visit(const Float *p); virtual void visit(const Double *p); virtual void visit(const String *p); virtual void visit(const Array *p); virtual void visit(const Dictionary *p); virtual void visit(const Set *p); virtual void visit(const Data *p); private: void setIndentLevel(int indentLevel); int _indentLevel; std::string _indentStr; std::string _result; }; // end of data_structure group /// @} NS_CC_END #endif // __CCDATAVISITOR_H__