祁宇,祁大神的访问者模式

好代码,共享,大家看.更详细的在此

#包含<io流><型名 T>构 访问者{虚 空 访问(T*)=0;};
构 访问者令牌{~访问者令牌()=默认;};
构 动物{
    虚 整 移动()=0;
    虚 空 接受(访问者令牌*)=0;~动物()=默认;
};<型名 T>
构 可访问:公 动物{
    空 接受(访问者令牌*v){
        动转<访问者<T>*>(v)->访问(静转<T*>());
    }
};

构 狗:公 可访问<>{
    整 移动(){4;}
    空 游泳(){输出<<"游泳"<<行尾;}
};

构 鸟:公 可访问<>{
    整 移动(){2;}
    空 飞(){输出<<"飞"<<行尾;}
};

构 鱼:公 可访问<>{
    整 移动(){1;}
    空 潜水(){输出<<"潜水"<<行尾;}
};<...T>
构 多访问者:公 访问者令牌,公 访问者<T>... {
    用 访问者<T>::访问...;
};

用 我的访问者=多访问者<,>;
用 我的访问者1=多访问者<>;

构 访问者实现:公 我的访问者{
    空 访问(*d){d->游泳();}
    空 访问(*b){b->();}
};

构 访问者实现1:公 我的访问者1{
    空 访问(*f){f->潜水();}
};

整 主(){
    动物*a=新 狗;访问者令牌*v=新 访问者实现;
    a->接受(v);动物*b=新 鸟;b->接受(v);
    访问者令牌*v1=新 访问者实现1;
    动物*c=新 鱼;c->接受(v1);
}

这个访问者模式最早是在AA大神(c++设计新思维–泛型编程与设计模式)里面的第10章

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值