#include <iostream>
struct a {
enum LOCAL_A { A1, A2 };
};
enum class b { B1, B2 };
int foo(int input) { return input; }
int main(void) {
std::cout << foo(a::A1) << std::endl;
std::cout << foo(static_cast<int>(b::B2)) << std::endl;
}
นี่a::LOCAL_A
คือสิ่งที่ enum ที่พิมพ์อย่างรุนแรงพยายามที่จะบรรลุ แต่มีความแตกต่างเล็กน้อย: enums ปกติสามารถแปลงเป็นประเภทจำนวนเต็มได้ในขณะที่ enums ที่พิมพ์อย่างรุนแรงไม่สามารถทำได้โดยไม่ต้องใช้นักแสดง
ดังนั้นมีวิธีการแปลงค่า enum ที่พิมพ์ออกมาอย่างมากเป็นประเภทจำนวนเต็มโดยไม่ต้องใช้แคสต์หรือไม่? ถ้าใช่เป็นอย่างไร