কারণ এটি আপনার ঘাঁটির কোনও একটিতে নাম সন্ধান করে তবে নাম অনুসন্ধান বন্ধ হয়ে যায়। এটি অন্যান্য ঘাঁটিগুলির বাইরেও দেখবে না। বি এর ফাংশনটি এ এর ক্রিয়াকলাপকে ছায়া দিচ্ছে আপনাকে এ এর ফাংশনটি বি এর স্কোপগুলিতে পুনরায় ঘোষণা করতে হবে, যাতে উভয় ফাংশন বি এবং সি এর মধ্যে দৃশ্যমান হয়:
class A
{
public:
void foo(string s){};
};
class B : public A
{
public:
int foo(int i){};
using A::foo;
};
class C : public B
{
public:
void bar()
{
string s;
foo(s);
}
};
সম্পাদনা করুন: স্ট্যান্ডার্ড দেয় আসল বিবরণটি (10.2 / 2 থেকে):
নিম্নলিখিত পদক্ষেপগুলি শ্রেণীর ক্ষেত্রের মধ্যে নাম অনুসন্ধানের ফলাফলকে সংজ্ঞায়িত করে, সি। প্রথমত, শ্রেণিতে এবং এর প্রতিটি বেস শ্রেণীর উপ-বস্তুর নামের জন্য প্রতিটি ঘোষণাকে বিবেচনা করা হয়। একটি উপ-অবজেক্ট বিতে সদস্য নাম চ একটি উপ-অবজেক্ট এ এ সদস্যের নাম গোপন করে যদি ক যদি বি এর একটি বেস শ্রেণীর উপ-অবজেক্ট হয় তবে যে কোনও বিবরণী এত গোপন থাকে তা বিবেচনা থেকে বাদ দেওয়া হয়। এই ঘোষণার যেটি একটি ব্যবহার-ঘোষণার মাধ্যমে প্রবর্তিত হয়েছিল সেগুলির প্রতিটি সি এর উপ-অবজেক্ট থেকে বিবেচিত হয় যা প্রজ্ঞাপনের দ্বারা নির্ধারিত ঘোষণাপত্রের প্রকারের হয় .9 6) যদি ফলাফলের ঘোষণার সেটটি না হয় সমস্ত একই ধরণের উপ-অবজেক্ট থেকে, বা সেটের একটি ননস্ট্যাটিক সদস্য রয়েছে এবং এতে পৃথক উপ-অবজেক্টের সদস্যদের অন্তর্ভুক্ত রয়েছে, একটি দ্বিধাগ্রস্ততা রয়েছে এবং প্রোগ্রামটি খারাপভাবে গঠিত। অন্যথায় সে সেটটি দেখার ফলাফল।
এটি অন্য জায়গায় বলার জন্য নিম্নলিখিতটি রয়েছে (এর ঠিক উপরে):
আইডি-এক্সপ্রেশনটির জন্য [ "foo" এর মতো কিছু ]] নামের শ্রেণিবদ্ধ হয়ে শুরু হয়; একটি যোগ্য-আইডির জন্য [ "এ :: ফু" এর মতো কিছু, এ নেস্টেড-নেম-স্পেসিফায়ার ], নেস্টেড-নেম-স্পেসিফায়ারের সুযোগে নাম সন্ধান শুরু হয়। নাম অনুসন্ধান অ্যাক্সেস নিয়ন্ত্রণের আগে স্থান নেয় (3.4, ধারা 11)।
([...] আমার দেওয়া) দ্রষ্টব্যটির অর্থ হ'ল বিতে আপনার ফুও ব্যক্তিগত থাকলেও, এ-তে থাকা ফু খুঁজে পাওয়া যাবে না (কারণ অ্যাক্সেস নিয়ন্ত্রণ পরে ঘটে)।