আমার কাছে নিম্নলিখিত কোড রয়েছে:
namespace A {
struct Foo {
int a;
};
}
struct Foo {
int b;
};
struct Bar : public A::Foo {
Bar(Foo foo) {
c = foo.b;
}
int c;
};
সি ++ সংকলকগুলি "সি = foo.b" এ অভিযোগ করে কারণ এ :: ফু এর কোনও সদস্য নাম বি নেই। আমি যদি এর সাথে বার প্যারামিটারের ধরনটি পরিবর্তন করি: ফুও এটি কাজ করে।
আমার প্রশ্ন হ'ল এই আচরণের পিছনে যুক্তি কি (আমি মনে করি যে উত্তরাধিকারটি বারকে একটি নামস্থানে প্রবেশ করে তবে এই তত্ত্বটিকে সমর্থন করার জন্য আমি কোনও দলিল খুঁজে পাই না।
A
, যা আপনি দেখতে পাচ্ছেন যে আপনি Bar
অন্য কাঠামো থেকে উত্তরাধিকার সূত্রে দেওয়া হয়েছে কিনা A
। তারপরে কোনও দ্বিধা নেই। এটা তোলে উত্তরাধিকার থেকে সবকিছু যোগ আরো ভালো হয় A::Foo
করার Bar
রেজল্যুশন সহ Foo
করার A::Foo
। দুঃখিত, আমি সত্যিই এটি আরও সুনির্দিষ্টভাবে প্রকাশ করতে পারি না।