मैं एक असाइनमेंट पर काम कर रहा हूं जिसमें विभिन्न प्रकार के पेड़ शामिल हैं, मेरे प्रोफेसर ने हमें निम्नलिखित कोड प्रदान किए हैं:

class TreeClass
{
private:
    typedef void (*FuncType)(const E& item); 
    class Node
    {
        friend class Tree<E>;
    };
    void traverse (Node* node, FuncType func);
public:
    void traverse(FuncType func); 
};

हम मुख्य में विधि कॉल के लिए लैम्ब्डा फ़ंक्शन तर्क के रूप में func पास करना चाहते हैं। मैंने इसे विधि कॉल के भीतर परिभाषित करके इसे लागू करने का प्रयास किया है।

myTree.traverse([] (string nodeData) -> void {cout << nodeData << endl;});

मैंने लैम्ब्डा फ़ंक्शन परिभाषा को एक चर यानी सेट करने का भी प्रयास किया है।

int main(int argc, char** argv)
{
    auto func = [] (string nodeData) -> void
    {
        cout << nodeData << endl;
    };
    Tree<string> myTree;
    myTree.traverse(func);
}

मुझे जो त्रुटि मिल रही है वह है no matching function call to 'traverse'

मुझे सच में यकीन नहीं है कि मैं वाक्य रचना या तार्किक रूप से गलत क्या कर रहा हूं क्योंकि मैंने कई अलग-अलग तरीकों और डेटा प्रकारों की कोशिश की है। आपके सहयोग के लिए धन्यवाद।

-2
jav_solo 15 अक्टूबर 2018, 05:34

1 उत्तर

सबसे बढ़िया उत्तर

मुझे अपना लैम्ब्डा फ़ंक्शन बदलना पड़ा

auto func = [](const string& nodeData) -> void { cout << nodeData << endl; };

0
Jav Solo 15 अक्टूबर 2018, 03:37