he escrito el patrón de visitante de la siguiente manera, pero no entiendo qué es el envío simple y doble. AFAIK, el único despacho es invocar un método basado en el tipo de llamada donde el doble despacho invoca un método basado en el tipo de llamante y el tipo de argumento.¿Qué es el envío simple y doble?
Supongo que el doble envío se produce en la jerarquía de una sola clase, pero ¿por qué la clase de visitante tiene dos jerarquías de clase pero todavía se considera como despacho doble.
void floppyDisk::accept(equipmentVisitor* visitor)
{
visitor->visitFloppyDisk(this);
}
void processor::accept(equipmentVisitor* visitor)
{
visitor->visitProcessor(this);
}
void computer::accept(equipmentVisitor* visitor)
{
BOOST_FOREACH(equipment* anEquip, cont)
{
anEquip->accept(visitor);
}
visitor->visitComputer(this);
}
void visitFloppyDisk(floppyDisk*);
void visitProcessor(processor*);
void visitComputer(computer*);
Explique utilizando el código de ejemplo que proporcioné.
AFAIK, el primer envío se produce en el objeto que invoca la aceptación y el segundo envío se produce en el objeto que invoca el método de visita.
Gracias.
Tal vez la lectura de este [artículo ] (http://en.wikipedia.org/wiki/Multiple_dispatch) puede ayudarlo a entender el envío, no cómo se implementa en C++, pero el concepto –