91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++訪問者模式

發布時間:2020-07-04 22:13:48 來源:網絡 閱讀:537 作者:Chinayu2014 欄目:編程語言

Visitor.h文件內容如下:

訪問者和元素之間互以對方為參數

#ifndef __VISITOR__  
#define __VISITOR__  
  
#include <iostream>  
#include <string>  
#include <vcl.h>  
using namespace std;  
  
class Element;  
  
  
///訪問者接口類  
class Visitor  
{  
  public:  
    virtual void Visit(Element *e) = 0;  
};  
  
//具體訪問者A  
class VisitorOne : public Visitor  
{  
  public:  
    //實現訪問接口,參數為元素,在類外面實現函數體  
    virtual void Visit(Element *e);  
};  
  
//具體訪問者B  
class VisitorTwo : public Visitor  
{  
  public:  
    //實現訪問接口,參數為元素,在類外面實現函數體  
    virtual void Visit(Element *e);  
};  
  
//=========================================================  
//Element類  
class Element  
{  
  public:  
    virtual void Accept(Visitor *v)  
    {  
        v->Visit(this);//調用訪問者接口  
    }  
  
    char* GetName()  
    {  
        return (char*)m_name.c_str();  
    }  
  
  public:  
    //類中待訪問的元素  
    string m_name;  
  
};  
  
//具有個性數據的元素  
class ElementA: public Element  
{  
  public:  
    ElementA(string s)  
    {  
        m_name = s;//傳入父類成員m_name中  
    }  
};  
  
class ElementB : public Element  
{  
  public:  
    ElementB(string s)  
    {  
        m_name = s;  
    }  
};  
  
//=========================================================  
//訪問者類one對元素處理方法(須聲明到Element類的后面否則編譯不能通過)  
void VisitorOne::Visit(Element *e)  
{  
    //獲取元素中的數據  
    char * data = e->GetName();  
    char szTemp[] = "正在處理數據:";  
    strcat(szTemp,data);  
    char  szTip[] = "第一個訪問者";  
    MessageBox(0,+szTemp,szTip,0);  
}  
//訪問者類two對元素的處理方法  
void VisitorTwo::Visit(Element *e)  
{  
    //獲取元素中的數據  
    char * data = e->GetName();  
    char  szTemp[] = "正在處理數據:";  
    strcat(szTemp,data);  
    char  szTip[] = "第二個訪問者";  
    MessageBox(0,+szTemp,szTip,0);  
}  
  
#endif

調用方法如下:

ElementA ea("元素A");  
ElementB eb("元素B");  
  
VisitorOne va;  
VisitorTwo vb;  
  
// 雙分派,“接受者”和“訪問者”決定了一個操作  
ea.Accept(&va);  
ea.Accept(&vb);  
  
eb.Accept(&va);  
eb.Accept(&vb);


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

铁岭市| 沈阳市| 韩城市| 郴州市| 山东省| 吉林省| 攀枝花市| 桓台县| 深州市| 西安市| 黄冈市| 抚顺市| 应城市| 凤翔县| 永年县| 永吉县| 句容市| 新兴县| 惠州市| 石棉县| 平南县| 永城市| 岱山县| 长岭县| 赣州市| 清水河县| 溧水县| 化德县| 华阴市| 遂溪县| 东港市| 江城| 蓝山县| 阿拉善左旗| 阿坝县| 泽州县| 金堂县| 阳曲县| 鱼台县| 鄯善县| 晋中市|