বন্ধুত্ব কেন কমপক্ষে +চ্ছিকভাবে সি ++ এ উত্তরাধিকারসূত্রে হয় না? আমি স্পষ্ট কারণগুলির জন্য ট্রানজিটিভিটি এবং রিফ্লেক্সিভিটি নিষিদ্ধ বুঝতে পেরেছি (আমি কেবল এফএকিউ এর সহজ উত্তরগুলি প্রকাশ করার জন্য এটি বলি), তবে virtual friend class Foo;
আমার ধাঁধাটির পংক্তিতে কিছু অভাব আছে । এই সিদ্ধান্তের পিছনে anyoneতিহাসিক পটভূমি কি কেউ জানেন? বন্ধুত্ব কি আসলেই কেবল একটি সীমাবদ্ধ হ্যাক যা কিছু অস্পষ্ট সম্মানজনক ব্যবহারের পথ খুঁজে পেয়েছিল?
শোধন জন্য সম্পাদনা: আমি নিম্নলিখিত দৃশ্যকল্প, যে বিষয়ে কথা বলছি না তাহলে ক সন্তান পারেন বি বা উভয় বি এবং তার সন্তানদের উন্মুক্ত করা হয়। আমি functionsচ্ছিকভাবে বন্ধুর ফাংশন ইত্যাদির ওভাররাইডগুলিতে অ্যাক্সেস দেওয়ার কল্পনা করতে পারি etc.
class A {
int x;
friend class B;
};
class B {
// OK as per friend declaration above.
void foo(A& a, int n) { a.x = n; }
};
class D : public B { /* can't get in A w/o 'friend class D' declaration. */ };
গৃহীত উত্তর: লোকি যেমন বলেছে , বন্ধুত্বপূর্ণ বেস শ্রেণিতে সুরক্ষিত প্রক্সি ফাংশন তৈরির মাধ্যমে প্রভাবটি কমবেশি অনুকরণ করা যায়, সুতরাং কোনও শ্রেণি বা ভার্চুয়াল পদ্ধতিতে উত্তরাধিকার সূত্রে বন্ধুত্ব দেওয়ার দরকার নেই । আমি বয়লারপ্লেট প্রক্সিগুলির প্রয়োজনীয়তা অপছন্দ করি (যা বন্ধুত্বপূর্ণ বেসটি কার্যকরভাবে হয়ে যায়) তবে আমি মনে করি যে এটি এমন একটি ভাষা ব্যবস্থার চেয়ে বেশি ভাল বলে মনে করা হয়েছিল যা সম্ভবত বেশিরভাগ সময়ই অপব্যবহারের সম্ভাবনা থাকে। আমি মনে করি যে সম্ভবত আমি এই ধরণের প্রশ্নগুলির আরও ভাল অন্তর্দৃষ্টি পেতে এখানে স্ট্রুপস্ট্রাপের ডিজাইন এবং বিবর্তনের সি +++ কিনেছি , যা আমি এখানে যথেষ্ট লোককে সুপারিশ করে দেখেছি ...