Solution of the Diamond Problem In C++


Object Oriented C++ নিয়ে পড়াশোনা শুরুতেই একটা মজার প্রবলেম পেলাম। আমি JAVA’তেই কাজ করেছি সবসময় এবং দেখেছি JAVA multiple inheritance support করে না(তবে Interface’এর মাধ্যমে multiple inheritance’এর flavor পাওয়া যায়)। এইটা একটা অসুবিধার মতই ভাবতাম আমি। কিন্তু C++ জানতে গিয়ে আবিস্কার করলাম JAVA কেন multiple inheritence Support করে না। তা হল JAVA তৈরী করার সময় যে ক’টি বিষয়ে জোর
দেয়া হয়েছিল তার অন্যতম হচ্ছে make JAVA Simple. ত কিভাবে  multiple inheritance program’কে complex করে তুলতে পারে তার একটা উদাহরন হচ্ছে C++’এর diamond problem। নিচের ছবিটি দেখি-

Diamond problem in C++

diamond problem in C++

এখানে A inherit করেছে B and C ‘কে, C and B inherit করেছে D’ কে। এখন A যদি D object’ কে call করে তাহলে সে কোন অব্জেচত পাবে? যে D object B inherit করেছিলো নাকি যে D object C inherit করেছিলো? এইটাই হল মজার diamond problem. নিচে কিভাবে C++ এই সমস্যার সমাধান করে তা দেখানো হয়েছে। নিচের Article আমি নেট থেকে পেয়েছি। লিঙ্ক দিয়ে দিলাম, চাইলে direct link  থেকেই পড়ে নিতে পারেন। Continue reading