समारोह सूचक के माध्यम से कक्षा वस्तु के लिए उपयोग की जरूरत है - द्विआधारी खोज वृक्ष कक्षा निर्माण संबंधित

वोट
1

Recursion साथ बाइनरी खोजें ट्री के लिए Traversals बना रहा है।

void inOrder(void (*inOrderPtr)(T&)) 
{ 
    if(this->left != NULL) 
        inOrder((*inOrderPtr)(this->left)); 
    inOrderPtr(this->data); 
    if(this->right != NULL) 
        inOrder((*inOrderPtr)(this->right)); 
} 

यहाँ कार्य है। अब इस स्पष्ट रूप से गलत है। यह समारोह इस तरह कहा जाता है:

first.inOrder(print_vals);

पहली वस्तु है, और प्रिंट Vals बस एक समारोह है कि प्रिंट वस्तु में डेटा है क्या है। प्रत्येक वस्तु, डेटा, छोड़ दिया, और सही के लिए तीन मान नहीं होता। कैसे मैं वास्तव में समारोह के साथ उन वस्तुओं उपयोग करते हैं?

15/10/2008 को 22:09
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


1 जवाब

वोट
3

ऐसा लगता है कि कॉल करने के लिए की तरह inOrderPtr(this->data)बस गुजर रहा है dataकरने के लिए पेड़ नोड के सदस्य print_valsकार्य करते हैं। आप का उपयोग करना चाहते हैं leftऔर rightतत्वों, का उपयोग inOrderPtr(*this)। आप इस तरह के लिए घोषणाओं के रूप में, संकलित करने के लिए के लिए में विभिन्न घोषणाओं को बदलने के लिए करना होगा inOrderPtrऔर print_vals। अपने कोड के बाकी को देखने के बिना यह है कि तुम क्या करने के लिए उन्हें बदलने की जरूरत है कहना मुश्किल है।

एक और नोट पर, मुझे लगता है कि आप पुनरावर्ती कॉल इस तरह अधिक लिखने के लिए चाहते हो सकता है:

this->left->inOrder(inOrderPtr);

मैं, हालांकि अपने कार्यान्वयन के बारे में मान्यताओं बनाने रहा हूँ।

15/10/2008 को 22:15
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more