मैंने विज़िटर पैटर्न को अनुसरण के रूप में लिखा है लेकिन मुझे समझ में नहीं आता कि सिंगल और डबल डिस्पैच क्या है। AFAIK, एकल प्रेषण कॉलर प्रकार के आधार पर एक विधि का आह्वान करता है जहां डबल प्रेषण कॉलर प्रकार और तर्क प्रकार के आधार पर एक विधि का आह्वान करता है।सिंगल और डबल डिस्पैच क्या है?
मुझे लगता है कि सिंगल क्लास पदानुक्रम में डबल प्रेषण होता है लेकिन क्यों विज़िटर क्लास में दो वर्ग पदानुक्रम होते हैं लेकिन इसे अभी भी डबल प्रेषण के रूप में माना जाता है।
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*);
कृपया प्रदान किए गए उदाहरण कोड का उपयोग करके समझाएं।
AFAIK, पहला प्रेषण उस ऑब्जेक्ट पर होता है जो स्वीकृति का आह्वान करता है और दूसरा प्रेषण विज़िट विधि का आह्वान करने वाले ऑब्जेक्ट पर होता है।
धन्यवाद।
हो सकता है कि पढ़ने इस [लेख ] (http://en.wikipedia.org/wiki/Multiple_dispatch) प्रेषण को समझने में आपकी सहायता कर सकता है - यह C++ में कैसे कार्यान्वित किया गया है, लेकिन अवधारणा –