द्वारा सदस्य चर को कैप्चर करें C++ 11 लैम्ब्डा अभिव्यक्तियों का उपयोग करते समय मैं मूल्य द्वारा सदस्य चर को कैसे पकड़ूं?मूल्य
[my_member]
वाक्य रचना का उपयोग करते हुए काम करने के लिए नहीं लगता है, और अंतर्निहित कब्जा this
सूचक का उपयोग करता है। कैप्चर प्रकार के सदस्य चर को स्पष्ट रूप से निर्दिष्ट करने का एक तरीका क्या है। क्या यह संभव है? अब के लिए
मेरे वैकल्पिक हल है:
void member_function()
{
std::shared_ptr<my_member_class> my_member_copy = my_member; // this shouldn't be necessary
std::async([=]{ std::cout << *my_member_copy; });
// std::async([=]{ std::cout << *my_member_; }); // wrong, my member could be potentially out of scope
}
मुझे साझा_प्टर रेफ गिनती के लिए मूल्यवर्तीकरण के लिए वैल्यू इनऑर्डर द्वारा कैप्चर करने की आवश्यकता है। अन्यथा जब ऑब्जेक्ट ऑब्जेक्ट नष्ट हो जाता है तो वस्तु नष्ट हो जाएगी, इस प्रकार एसिंक ऑपरेशन में संभावित पहुंच उल्लंघन हो सकता है। (लैम्ब्डा में * जोड़ने के लिए भूल गए)। मुझे नहीं लगता कि आप मेरे उदाहरण से अलग कैसे हैं। – ronag
"यह नहीं जानना कि आपका सदस्य किस तरह का काम कर रहा है:", कारण मैंने लिखा है कि ऑटो के बजाय std :: shared_ptr लिखा गया था "my_member" के प्रकार के बारे में स्पष्ट होना चाहिए, जो shared_ptr है। –
ronag