عند العمل مع الكائنات والمثيلات الأخرى للفصل ، فإن الوصول إلى السمات هو إحدى العمليات المعتادة للمبرمج. قد يكون الوصول إلى بيانات معينة مخزنة في الكائنات أمرًا صعبًا ، نظرًا لطرق الأمان المستخدمة لها. لذلك ، يمكن سحب السمات التي تم إغلاقها بواسطة المحددات الخاصة والمحمية من مثيل فئة فقط في طريقة تنتمي إلى كائن من نفس الفئة أو فئة فرعية (محمية).

تعليمات
الخطوة 1
قم بإنشاء كائن أو مؤشر لمثيل من الفئة التي تحتاج إلى سماتها في برنامجك. البناء القياسي لمثل هذه العملية هو CMyClass myObj1. في بعض الأحيان ، لتهيئة كائن ، يجب عليك تمرير معلمات معينة إلى مُنشئ الفئة. في هذه الحالة ، قد يبدو سجل إنشاء الكائن كما يلي: CMyClass myObj1 (param1، param2، param3) ، حيث يكون CMyClass هو اسم الفئة ، و myObj1 هو اسم الكائن الذي يتم إنشاؤه ، ويتم سرد كافة المعلمات التي طلبها المُنشئ بين قوسين. يتم إنشاء مؤشر لمثيل فئة على النحو التالي: CMyClass * pObj1 = new CMyClass (param1، param2، param3).
الخطوة 2
إن أبسط طريقة لاستدعاء سمة هي الرجوع إليها مباشرة في أي مكان في البرنامج. ومع ذلك ، هذا ممكن فقط للبيانات المفتوحة الموصوفة في فئة مع المعدل العام. يبدو الوصول المباشر من خلال كائن كما يلي: myObj1.attr1 ، حيث attr1 هي سمة من سمات هذه الفئة. بالنسبة لمؤشر ، ستكون المكالمة: pObj1–> attr1.
الخطوه 3
إذا كانت السمة التي تحتاج إلى الإشارة إليها لها الحالة المخفية وتم وصفها في فئة مع المُعدِّل الخاص ، فإن الوصول إليها ممكن فقط من خلال طريقة تنتمي إلى نفس الفئة. يجب أن تكون طريقة أو وظيفة الفصل ذات الحالة العامة. إضافة طريقة جديدة للفئة ، حيث تكتب معالجة السمة المطلوبة. في هذه الحالة ، يمكن تمرير المعلمات إلى الوظيفة ، اعتمادًا على القيمة التي يتم تنفيذ إجراءات معينة منها. يمكن أن تقوم الوظيفة نفسها أيضًا بإرجاع البيانات ، مثل محتوى السمة. كود برنامج C ++ الذي ينفذ كلا الوظيفتين للعمل مع سمة خاصة: class CMyClass {protected: int attr1؛ // السمة العامة: void funcA1 (int param) {attr1 = param؛ } int funcA2 () {return attr1؛ }}؛
الخطوة 4
وبالتالي ، لضبط السمة الخاصة attr1 على القيمة التي تحتاجها ، قم باستدعاء طريقة من نفس الفئة باستخدام الكائن الذي تم إنشاؤه مسبقًا: myObj1.funcA1 (10) - من خلال عملية ضمنية مماثلة ، يتم وضع القيمة 10 في سمة attr1. عند العمل بمؤشر إلى مثيل لفئة ، ستبدو عملية مماثلة على النحو التالي: рObj1–> funcA (10). لاسترداد السمة الخاصة attr1 ومعرفة القيمة المخزنة فيها ، قم باستدعاء طريقة أخرى للفئة: int Res = myObj1.funcA2 (). في هذه الحالة ، سيتم تخصيص قيمة متغير الفئة المخفية لمتغير العدد الصحيح Res.
الخطوة الخامسة
إذا كنت بحاجة إلى استدعاء سمة ذات حالة محمية في جميع كائنات الفئات الفرعية ، فارجع إلى متغيرها مباشرةً. ومع ذلك ، عند العمل في وظائف الطبقات الأجنبية ، يجب الحصول على الوصول إلى البيانات المحمية بالطريقة الموضحة أعلاه.
الخطوة 6
لاستدعاء سمة بدون إنشاء كائن ، قم بتعريف متغيرها في الفئة على أنه ثابت باستخدام البنية التالية: static int attr1. في هذه الحالة ، يمكنك سحب السمة في أي مكان في رمز البرنامج عن طريق تحديد الإدخال: CMyClass:: attr1.