मैं वर्तमान में सीखने की कोशिश कर रहा हूं कि स्मार्ट पॉइंटर्स का उपयोग कैसे किया जाए। हालाँकि कुछ प्रयोग करते समय मैंने निम्नलिखित स्थिति की खोज की जिसके लिए मुझे कोई समाधान नहीं मिला:
कल्पना कीजिए कि आपके पास कक्षा ए की एक वस्तु है जो कक्षा बी (बच्चे) की वस्तु का माता-पिता है, लेकिन दोनों को एक दूसरे को जानना चाहिए:
class A;
class B;
class A
{
public:
void addChild(std::shared_ptr<B> child)
{
children->push_back(child);
// How to do pass the pointer correctly?
// child->setParent(this); // wrong
// ^^^^
}
private:
std::list<std::shared_ptr<B>> children;
};
class B
{
public:
setParent(std::shared_ptr<A> parent)
{
this->parent = parent;
};
private:
std::shared_ptr<A> parent;
};
सवाल यह है कि कक्षा ए की वस्तु अपने बच्चे के लिए std::shared_ptr
स्वयं ( this
) का पास कैसे हो सकती है ?
बूस्ट शेयर्ड पॉइंटर्स ( फॉर एboost::shared_ptr
this
फॉरिंग ) के लिए समाधान हैं , लेकिन std::
स्मार्ट पॉइंटर्स का उपयोग करके इसे कैसे संभालें ?