标签:
目的
class Equipment
{
public:
virtual void accept(Visitor* v) = 0;
};
class FloppyDisk : public Equipment
{
public:
virtual void accept(Visitor* v);
};
void FlopyyDisk::accept(Visitor* v)
{
v->visit(this);
}
class Chassis : public Equipment
{
public:
virtual void accept(Visitor* v);
private:
std::vector<Equipment*> m_parts;
};
void Chassis::accept(Visitor* v)
{
for(int i = 0; i < m_parts.size(); ++i)
m_parts[i]->accept(v);
v->visit(this);
}
class Visitor
{
public:
virtual void visit(FloppyDisk* floppyDisk) = 0;
virtual void visit(Chassis* chassis) = 0;
};
标签:
原文地址:http://blog.csdn.net/harrising/article/details/38149915