سؤال

في التعليمات البرمجية التالية، G ++ يعطي هذا الخطأ: 1.CPP: في وظيفة العضو void W::test()': 1.cpp:6: error:INT F :: Glob 'هو 1.CPP خاص: 19: خطأ: في هذا السياق

ولكن، لا ينبغي أن تستخدم المتغير العالمي المعلن على مستوى العالم هنا، بدلا من "Glob" "Private"؟

   #include <iostream.h>

    int glob;
    class F
    {
        int glob;
        public:
        void readIt()
        {
            cin >> glob;
        }
    };

    class W : public F
    {
        public:
            void test()
            {
                glob--;
            }
    };

    int main()
    {
    }
هل كانت مفيدة؟

المحلول

يتم الوصول إلى المتغيرات والوظائف باستخدام قواعد التراجع، وليس قواعد الضخمة. لأن F::glob هل glob في نطاق W::test(), ، يتم استخدامها. ومع ذلك، W::test() ليس لديه حق الوصول إلى F::glob, ونتائج خطأ. المحول البرمجي لا ليس تحقق من وجود ::glob نظرا لأن هناك شيئا آخر يدفعه في نطاق "الأولوية" (غير متأكد من المصطلح الدقيق).

نصائح أخرى

ظلال الغروب الخاصة على الغروب العالمية، وبالتالي فإن الخطأ هو الاستخدام الصحيح :: Glob للوصول إلى المتغير العالمي إذا كنت نيتل على استخدام المتغير العالمي

يمكنك محاولة استخدام ::glob--; في حين أن. وبهذه الطريقة التي تخبرها بالمترجم لاستخدام مساحة الاسم العالمية.

سيتم استخدام عضو الطبقة هنا، للوصول إلى استخدام المتغير العالمي :: المشغل.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top