Loki::CyclicVisitor
来源:互联网 发布:php 蜘蛛记录 编辑:程序博客网 时间:2024/05/21 08:39
Loki::CyclicVisitor类似设计模式中访问者模式
#include <loki/Visitor.h> // 使用了Loki中的cyclic visitor模板#include <loki/TypelistMacros.h>#include <loki/Functor.h>#include <loki/AssocVector.h>#include <iostream>using namespace std;class Dog;class Cat;class Wolf;typedef Loki::CyclicVisitor<void, LOKI_TYPELIST_3(Dog, Cat, Wolf)> MyVisitor;class Animal{public: virtual void Accept(MyVisitor& v) = 0;public: virtual void say(){ cout << "I am Animal class" << endl; }};class Dog :public Animal{public: LOKI_DEFINE_CYCLIC_VISITABLE(MyVisitor)public: void say(){ cout << "I am Dog" << endl; }};class Cat :public Animal{public: LOKI_DEFINE_CYCLIC_VISITABLE(MyVisitor)public: void say(){ cout << "I am Cat" << endl; }};class Wolf :public Animal{public: LOKI_DEFINE_CYCLIC_VISITABLE(MyVisitor)public: void say(){cout<<"I am Wolf"<<endl;}};class ConcretVisitor :public MyVisitor{public: void Visit(Dog& dog) { dog.say(); } void Visit(Cat& cat) { cat.say(); } void Visit(Wolf& wolf) { wolf.say(); }};void testFunc(std::shared_ptr<Animal> pAnimal){ ConcretVisitor cv; pAnimal->Accept(cv);}int main(){ std::shared_ptr<Animal> pDog = std::make_shared<Dog>(); std::shared_ptr<Animal> pCat = std::make_shared<Cat>(); std::shared_ptr<Animal> pWolf = std::make_shared<Wolf>(); testFunc(pDog); testFunc(pCat); testFunc(pWolf); getchar(); return 0;}
阅读全文
0 0
- Loki::CyclicVisitor
- loki
- Loki 库
- Loki攻击
- loki note
- loki 练习
- LOKI库
- 郁闷的Loki::SmartPtr
- A Loki compile problem
- Loki泛化仿函数
- 工厂模式之【Loki】
- Loki 单键的使用
- loki factory的使用
- Loki库学习1
- Loki之类型识别
- Loki的SingletonHolder解析
- Loki的继承生成器
- Loki库的使用
- LeetCode
- unity学习——单例模式
- xlwt写入单元格,xlrd读出单元格
- C#最佳工具集合:IDE、分析、自动化工具等
- Spark学习笔记2
- Loki::CyclicVisitor
- android values适配中 文件夹加载策略解析
- 侧拉菜单
- 使用geotools和jts进行GIS数据生成
- Effective Java中文第二章第2节(个人渣翻)
- 站长总结用过的虚拟主机,VPS,用过服务器,网站管理系统有哪些
- android产品研发与用户需求、体验
- 你的云主机
- 201312-2ISBN号码