এনাম ক্লাস ("নতুন enums", "শক্তিশালী enums") traditionalতিহ্যবাহী সি ++ গণনা সহ তিনটি সমস্যার সমাধান করে:
- প্রচলিতগুলি
enums
স্পষ্টত রূপান্তরিত করে int
, ত্রুটি সৃষ্টি করে যখন কেউ কোনও সংখ্যার পূর্ণসংখ্যা হিসাবে কাজ করতে চায় না।
- প্রচলিত
enums
রেকর্ডগুলি তাদের গণকের আশেপাশের স্কোপে রফতানি করে যার ফলে নাম সংঘর্ষ হয়।
- অন্তর্নিহিত প্রকারটি
enum
নির্দিষ্ট করা যায় না, বিভ্রান্তি সৃষ্টি করে, সামঞ্জস্যের সমস্যা সৃষ্টি করে এবং সামনে ঘোষণা অসম্ভব করে তোলে।
enum class
("শক্তিশালী enums") দৃ strongly়ভাবে টাইপ করা এবং স্কোপযুক্ত:
enum Alert { green, yellow, orange, red };
enum class Color { red, blue };
enum class TrafficLight { red, yellow, green };
Alert a = 7;
Color c = 7;
int a2 = red;
int a3 = Alert::red;
int a4 = blue;
int a5 = Color::blue;
Color a6 = Color::blue;
যেমন দেখানো হয়েছে, traditionalতিহ্যবাহী এনামগুলি যথারীতি কাজ করে তবে আপনি এখন এনামের নামের সাথে বিকল্পভাবে যোগ্যতা অর্জন করতে পারেন।
নতুন এনামগুলি "এনাম ক্লাস" কারণ তারা traditionalতিহ্যবাহী গণনাগুলির (নামগুলির মান) দিকগুলি ক্লাসের দিকগুলি (স্কোপড সদস্য এবং রূপান্তরগুলির অনুপস্থিতি) এর সাথে একত্রিত করে।
অন্তর্নিহিত প্রকারটি নির্দিষ্ট করতে সক্ষম হওয়ায় সহজ আন্তঃব্যবহারযোগ্যতা এবং গণনাগুলির গ্যারান্টিযুক্ত আকারের মঞ্জুরি দেয়:
enum class Color : char { red, blue };
enum class TrafficLight { red, yellow, green };
enum E { E1 = 1, E2 = 2, Ebig = 0xFFFFFFF0U };
enum EE : unsigned long { EE1 = 1, EE2 = 2, EEbig = 0xFFFFFFF0U };
এটি এনামগুলির অগ্রিম ঘোষণাও সক্ষম করে:
enum class Color_code : char;
void foobar(Color_code* p);
enum class Color_code : char { red, yellow, green, blue };
অন্তর্নিহিত প্রকারটি অবশ্যই স্বাক্ষরিত বা স্বাক্ষরবিহীন পূর্ণসংখ্যার ধরণের এক হতে হবে; ডিফল্ট হয় int
।
স্ট্যান্ডার্ড লাইব্রেরিতে, enum
ক্লাসগুলি এর জন্য ব্যবহৃত হয়:
- ম্যাপিং সিস্টেম নির্দিষ্ট ত্রুটি কোড: ইন
<system_error>
: enum class errc
;
- পয়েন্টার সুরক্ষা সূচক: ইন
<memory>
:enum class pointer_safety { relaxed, preferred, strict };
- আই / ও স্ট্রিম ত্রুটি: ইন
<iosfwd>
:enum class io_errc { stream = 1 };
- অ্যাসিনক্রোনাস যোগাযোগের ত্রুটি পরিচালনা: এ
<future>
:enum class future_errc { broken_promise, future_already_retrieved, promise_already_satisfied };
এর মধ্যে বেশ কয়েকটিতে অপারেটর রয়েছে যেমন ==
সংজ্ঞায়িত।
enum class Colours
এবংenum class Fruits
। কারন যখন আমি বনাম 2010 কোড লেখেন এটা একটি ত্রুটি ছোঁড়া"expects a defination or a tag name"
অধীনেclass
।