1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
class visitor
{
public:
visitor() { }
virtual ~vistor() { }
};
class element_vistor : public visitor
{
public:
element_visitor() { }
virtual ~element_visitor() { }
void accept(element *e) { ... }
};
class element
{
public:
void visit(visitor* v)
{
element_visitor* ev = dynamic_cast<element_visitor*>(v);
// si ce n'est pas un visiteur d'élément, je ne vais de toute façon
// pas essayer de me faire "accepter".
if (ev)
{
ev->accept(this);
}
}
}; |
Partager