علاوه بر توضیحات دوستان و برای جمعبندی:
انواع شمارشی (enumerated types) از مجموعهای از ثابتهای عددی تشکیل شدهاند و بهتر است به آنها property (خاصیت) نگوییم.
۱) enum را در یک فضای نام اختصاصی ایجاد کنید:
namespace EnumType1
{
enum EnumType1
{
First,
Last
};
}
namespace EnumType2
{
enum EnumType2
{
First,
Last
};
}
برای دسترسی به اعضای آن:
EnumType1::First
EnumType1::Last
EnumType2::First
EnumType2::Last
۲) روش دیگر همان است که خودتان نیز گفتید، نام آن را در کنار اعضای آن بنویسید:
enum EnumType1
{
EnumType1_First,
EnumType1_Last
};
enum EnumType2
{
EnumType2_First,
EnumType2_Last
};
برای دسترسی به اعضای آن:
EnumType1_First
EnumType1_Last
EnumType2_First
EnumType2_Last
۳) روش دیگر این است که از قابلیت استاندارد جدید ++C (معروف به C++0x) استفاده کنید:
enum class EnumType1
{
First,
Last
};
enum class EnumType2
{
First,
Last
};
برای دسترسی به اعضای آن:
EnumType1::First
EnumType1::Last
EnumType2::First
EnumType2::Last
بنابراین با تعریف نوع بصورت enum class، اعضای انواع enum با هم تداخل نخواهد داشت.