zoukankan      html  css  js  c++  java
  • Visitor模式的C++实现

    Visitor模式
    #include <iostream>
    #include 
    <string>

    class emp;
    class boss;
    class visitor
    {
    public:
        visitor(){};
        
    ~visitor(){};
        
    virtual void visit( emp * emp ) {};
        
    virtual void visit( boss * ss ) {};
    };


    class emp
    {
        
    int m_sdays, m_vdays;
        
    float m_salarys;
        std::
    string m_name;
    public:
        emp(std::
    string name, float salary, int sdays, int vdays):m_name(name),m_salarys(salary),m_sdays(sdays),m_vdays(vdays) { };
        
    ~emp(){};

        std::
    string getname() {return m_name; };
        
    float getsalary() {return m_salarys ; };
        
    int getsdays() {return m_sdays; } ;
        
    int getvdays() {return m_vdays; } ;

        
    virtual void accept(visitor *v) { v->visit(this);};

    };


    class boss:public emp
    {
    public:
        
    virtual void accept(visitor *v) { v->visit(this);};
    };


    class vacvisitor:public visitor
    {
        
    int m_totalvdays;
    public:
        vacvisitor():m_totalvdays(
    0){};
        
    ~vacvisitor(){};
        
    int gettotalvdays(){ return m_totalvdays; } ;
        
    virtual void visit( emp * emp ) { m_totalvdays += emp->getvdays(); };
        
    virtual void visit( boss * boss ) { m_totalvdays += boss->getvdays(); };

    };

    int main()
    {
        emp array[
    2= {emp("a",10012 ),emp("b",10012 )};

        vacvisitor 
    * vc = new vacvisitor();

        
    for (int i = 0; i< sizeof(array)/sizeof(emp) ; i++)
        {
            array[
    0].accept(vc);
        }

        std::cout 
    << vc->gettotalvdays()<<std::endl;

        getchar();

        
    return 0;
    }
  • 相关阅读:
    使用 libevent 和 libev 提高网络应用性能
    An existing connection was forcibly closed by the remote host
    各种浏览器的兼容css
    vs输出窗口,显示build的时间
    sass
    网站设置404错误页
    List of content management systems
    css footer not displaying at the bottom of the page
    强制刷新css
    sp_executesql invalid object name
  • 原文地址:https://www.cnblogs.com/mumuliang/p/1885655.html
Copyright © 2011-2022 走看看