Ich habe das Besuchermuster wie folgt geschrieben, aber ich verstehe nicht, was Einzel- und Doppelversand ist. AFAIK, einzelne Versendung ruft eine Methode auf, die auf dem Aufruftyp basiert, bei dem die doppelte Versendung eine Methode basierend auf dem Aufruftyp und dem Argumenttyp aufruft.Was ist Single und Double Dispatch?
Ich denke, Doppelversand ist in der einzelnen Klassenhierarchie passieren, aber warum Besucher Klasse hat zwei Klassenhierarchie, aber es gilt immer noch als Doppelversand.
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*);
Bitte erläutern Sie anhand des von mir bereitgestellten Beispielcodes.
AFAIK, die erste Dispatch erfolgt auf Objekt, wer die Annahme aufrufen und zweiten Dispatch geschieht auf Objekt, die die Visit-Methode aufrufen.
Danke.
Vielleicht Lesen dieses [Artikel ] (http://en.wikipedia.org/wiki/Multiple_dispatch) kann Ihnen helfen zu verstehen, Versand - nicht wie es in C++ implementiert ist, aber das Konzept –