forward decration یک enum class و استفاده به عنوان فیلد کلاس - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

forward decration یک enum class و استفاده به عنوان فیلد کلاس

+1 امتیاز

چرا forward declration یک enum class و استفاده به شکل غیر اشاره گر مجاز هست  ولی همین کار برای کلاس ها مجاز نیست ؟

enum class MyEnum;//forward declaring an enum
class MyClass;//forward declaring a class

class Test
{
  MyEnum var;//ok
  //MyClass c;//error
}

 

سوال شده دی 8, 1393  بوسیله ی PSPCoder (امتیاز 1,301)   14 40 57

1 پاسخ

+1 امتیاز

کامپایلر برای ساختن متغیر نیاز داره زمان کامپایل سایز کلاس رو داشته باشه  .

وقتی که کلاس رو forward declration می کنید به این اطلاعات دسترسی نداره پس ارور میده ( این جا هم توضیح دادم )

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

 

پاسخ داده شده دی 9, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
...