C++-معنى عبارة تجمع بين typedef و typename




(2)

في ملف رأس C ++ ، أرى هذا الرمز:

typedef typename _Mybase::value_type value_type;

الآن ، كما فهمت ، نقلاً عن « C ++ المرجع الكامل » لشيلت. يمكن استبدال typename الكلمات الرئيسية ، والاستخدام الثاني لل typename هو إبلاغ المترجم بأن الاسم المستخدم في إعلان القالب هو اسم نوع وليس اسم كائن.

وبالمثل ، يمكنك تحديد أسماء أنواع البيانات الجديدة باستخدام الكلمة الرئيسية typedef . أنت لا تنشئ فعلاً نوع بيانات جديدًا ، بل تحدد اسمًا جديدًا لنوع موجود.

ومع ذلك ، هل يمكنك توضيح معنى سطر التعليمات البرمجية أعلاه بالضبط ، حيث يتم دمج typedef و typename معًا. وماذا تعني كلمة " :: " في البيان؟


يقول _Mybase::value_type أن _Mybase::value_type هو اسم النوع بحيث يمكن typedef الاعتماد على هذه الحقيقة.


يقوم typedef بتعريف نوع جديد للاستخدام في التعليمات البرمجية ، مثل الاختصار.

typedef typename _MyBase::value_type value_type;
value_type v;
//use v

typename هنا هو السماح لبرنامج التحويل البرمجي بمعرفة أن value_type هو نوع وليس كائنًا داخل _MyBase .

the :: هو نطاق النوع. نوع من مثل "في" لذلك value_type "في" _MyBase . أو يمكن أيضًا التفكير فيه على أنه يحتوي على.





typename