¿Qué es el envío simple y doble?

He escrito el patrón de visitante de la siguiente manera, pero no entiendo qué es el envío simple y doble. AFAIK, el despacho único es invocar un método basado en el tipo de llamador donde el despacho doble es invocar un método basado en el tipo de llamador y el tipo de argumento.

Supongo que el despacho doble ocurre en la jerarquía de una sola clase, pero por qué la clase de visitante tiene una jerarquía de dos clases pero todavía se considera como un 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 despacho se realiza en el objeto que invoca la aceptación y el segundo despacho se realiza en el objeto que invoca el método de visita.

Gracias.

Respuestas a la pregunta(2)

Su respuesta a la pregunta