کامپایلر برای ساختن متغیر نیاز داره زمان کامپایل سایز کلاس رو داشته باشه .
وقتی که کلاس رو forward declration می کنید به این اطلاعات دسترسی نداره پس ارور میده ( این جا هم توضیح دادم )
ولی سایز enum کلاس مشخص هست و قابل دسترسی ( نوع داده ای که محتوا enum داخلش ذخیره شده با std::underlying_type قابل فهمیدن هست ) به همین دلیل forward declration برای enum class مشکلی نداره