আমি বর্তমানে স্মার্ট পয়েন্টারগুলি কীভাবে ব্যবহার করতে হয় তা শেখার চেষ্টা করছি। তবে কিছু পরীক্ষা-নিরীক্ষা করার সময় আমি নিম্নলিখিত পরিস্থিতিটি আবিষ্কার করেছিলাম যার জন্য আমি কোনও সন্তোষজনক সমাধান খুঁজে পাইনি:
কল্পনা করুন আপনার ক্লাস এ এর একটি বস্তু বি শ্রেণীর (সন্তানের) কোনও সামগ্রীর পিতা বা মাতা হওয়ার বিষয়টি রয়েছে তবে উভয়েরই একে অপরকে জানা উচিত:
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::
স্মার্ট পয়েন্টার ব্যবহার করে পরিচালনা করবেন ?