ধরা যাক আমার কাছে দুটি এবং দুটি ধরণের অবজেক্ট রয়েছে, তাদের মধ্যে সম্পর্ক অনেকগুলি থেকে অনেকের মধ্যে, তবে তাদের দু'জনেরই অন্যটির মালিক নয়।
A এবং B উভয় দৃষ্টান্ত সংযোগ সম্পর্কে সচেতন হওয়া প্রয়োজন; এটি কেবল একটি উপায় নয়
সুতরাং, আমরা এটি করতে পারি:
class A
{
...
private: std::vector<B *> Bs;
}
class B
{
private: std::vector<A *> As;
}
আমার প্রশ্ন হ'ল সংযোগগুলি তৈরি করতে এবং ধ্বংস করতে আমি কোথায় ফাংশন রাখি?
এটি A :: সংযুক্তি (বি) হওয়া উচিত, যা পরে এ :: বিএস এবং বি :: ভেক্টর হিসাবে আপডেট করে?
বা এটি বি :: সংযুক্তি (এ) হওয়া উচিত, যা সমান যুক্তিযুক্ত বলে মনে হয়।
তাদের কেউই ঠিক মনে করেন না। যদি আমি কোডটি দিয়ে কাজ করা বন্ধ করি এবং এক সপ্তাহ পরে ফিরে আসি তবে আমি নিশ্চিত যে আমি এ.এটাচ (বি) বা বিআটাচ (এ) করছিলাম কিনা তা আমি মনে করতে পারব না।
সম্ভবত এটি এর মতো একটি ফাংশন হওয়া উচিত:
CreateConnection(A, B);
তবে একটি বৈশ্বিক ফাংশন তৈরি করাও অনাকাঙ্ক্ষিত বলে মনে হয়, এটি কেবল একটি এবং বি শ্রেণীর সাথে কাজ করার জন্য বিশেষত একটি ফাংশন given
আরেকটি প্রশ্ন: আমি যদি এই সমস্যা / প্রয়োজনীয়তাটি প্রায়শই চালাই তবে আমি কি কোনওভাবে এর জন্য একটি সাধারণ সমাধান করতে পারি? সম্ভবত একটি টুওয়ে কানেকশন ক্লাস যা থেকে এই ধরণের সম্পর্ক ভাগ করে নেওয়া ক্লাসগুলির মধ্যে থেকে আমি ব্যবহার করতে পারি বা ব্যবহার করতে পারি?
এই পরিস্থিতিটি পরিচালনা করার জন্য কিছু ভাল উপায় কী ... আমি জানি যে কীভাবে একের সাথে অনেকগুলি "সি এর মালিকানাধীন D" পরিস্থিতিটি বেশ ভালভাবে পরিচালনা করতে হয় তবে এটি একটি কৌশলপূর্ণ।
সম্পাদনা: কেবল এটি আরও সুস্পষ্ট করার জন্য, এই প্রশ্নটির মালিকানা সংক্রান্ত সমস্যা জড়িত না। এ এবং বি উভয়ই কিছু অন্য জেডের মালিকানাধীন, এবং জেড সমস্ত মালিকানা সংক্রান্ত বিষয়গুলির যত্ন নেয়। আমি কেবল এ এবং বি এর মধ্যে বহু-বহু সংযোগগুলি কীভাবে তৈরি করতে / সরাতে আগ্রহী তা সম্পর্কে
Pointer
এবং GestureRecognizer
। পয়েন্টারগুলি ইনপুট ম্যানেজার শ্রেণীর মালিকানাধীন এবং পরিচালিত হয়। অঙ্গভঙ্গি সনাক্তকারীদের উইজেট দৃষ্টান্তগুলির মালিকানা, যা কোনও স্ক্রিন উদাহরণ দ্বারা মালিকানাধীন হয় যা কোনও অ্যাপ্লিকেশন উদাহরণ দ্বারা মালিকানাধীন। পয়েন্টারগুলি গেসচাররনাকাইনাইজারদের জন্য নিযুক্ত করা হয় যাতে তারা তাদের কাঁচা ইনপুট ডেটা ফিড করতে পারে তবে জেচার রেকনাইজারদের তাদের সাথে বর্তমানে কতগুলি পয়েন্টার যুক্ত রয়েছে সে সম্পর্কে সচেতন হওয়া দরকার (1 আঙুল বনাম 2 আঙুলের অঙ্গভঙ্গি ইত্যাদি আলাদা করতে)।