Mohssen A Mohssen نشر 3 ديسمبر 2021 أرسل تقرير نشر 3 ديسمبر 2021 لدي namespace ويحتوي على دالة باسم user_details ولكن لدي دالة أخرى عامة global بنفس الاسم: std::string user_details() { return "global"; } namespace user { std::string user_details() { return "local"; } void execute() { std::cout << user_details(); // Output: local } } عندما أقوم بتنفيذ الدالة execute يتم تنفيذ الدالة user_details الموجودة في الـ namespace، كيف أقوم بإستدعاء الدالة العامة الموجودة خارج الـ namespace لكي تكون النتيجة "global"؟ 1 اقتباس
1 سامح أشرف نشر 3 ديسمبر 2021 أرسل تقرير نشر 3 ديسمبر 2021 عليك أن تستعمل المعامل scope resolution operator ( :: ) والذي يقوم بتحديد مجال الدالة التي تريد إستدعائها، فعندما تستعدي الدالة execute تقوم بتنفيذ الأمر كالتالي: int main() { // namespcae::function() user::execute(); return 0; } أي أن الجزء الموجود على اليمين هو اسم الدالة والجزء الموجود على يسار المعامل هو اسم المجال namespace، وفي حالة لم يتم تحديد اسم namespace سوف يتم البحث عن الدالة في المجال العام global scope، كالتالي: void print() { std::cout << "hello, world!"; } int main() { ::print(); return 0; } بالطبع إستخدام المعامل scope resolution في الكود السابق غير ضروري ولكن في الكود الخاص بك، عليك أن تستخدمه لتشير إلى الدالة الموجودة في النطاق العام global scope: std::string user_details() { return "global"; } namespace user { std::string user_details() { return "local"; } void execute() { std::cout << ::user_details(); // global } } عند تنفيذ الدالة execute في الكود السابق سوف يتم تنفيذ الدالة الموجودة في المجال العام وسيتم طباعة كلمة global 2 اقتباس
السؤال
Mohssen A Mohssen
لدي namespace ويحتوي على دالة باسم user_details ولكن لدي دالة أخرى عامة global بنفس الاسم:
عندما أقوم بتنفيذ الدالة execute يتم تنفيذ الدالة user_details الموجودة في الـ namespace، كيف أقوم بإستدعاء الدالة العامة الموجودة خارج الـ namespace لكي تكون النتيجة "global"؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.