أتمتة تحويل التعداد المكتوب بقوة إلى عدد صحيح
في لغة C، تأتي التعدادات في نكهتين: التعدادات المكتوبة بقوة والتعدادات العادية. يمكن تحويل التعدادات العادية ضمنيًا إلى أعداد صحيحة، بينما تتطلب التعدادات المكتوبة بقوة قالبًا صريحًا. وهذا يثير السؤال: هل هناك طريقة تلقائية لتحويل التعدادات المكتوبة بقوة إلى أعداد صحيحة دون اللجوء إلى قوالب صريحة؟
الجواب هو لا، وهو مقصود. تم تصميم التعدادات المكتوبة بقوة لمنع التحويل الضمني إلى أعداد صحيحة. بشكل أساسي، يضمن المترجم أنك تقر صراحةً بالتحويل من قيمة معدودة إلى عدد صحيح.
ومع ذلك، هناك حل بديل لتجنب تحديد النوع الأساسي في التحويل. من خلال استخدام وظيفة القالب، يمكننا تجريد مواصفات نوع طاقم التمثيل.
template
constexpr typename std::underlying_type::type to_underlying(E e) noexcept {
return static_cast::type>(e);
}
باستخدام وظيفة القالب هذه، يمكن تحقيق التحويل على النحو التالي:
std::cout يلغي هذا الأسلوب مواصفات النوع الصريحة في التمثيل، مما يبسط عملية التحويل مع الحفاظ على السلوك المطلوب للتحويل الصريح القسري للتعدادات المكتوبة بقوة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3