সি ++ এ এনামগুলি কীভাবে ব্যবহার করবেন


218

ধরুন আমাদের enumনীচের মতো একটি রয়েছে :

enum Days {Saturday, Sunday, Tuesday, Wednesday, Thursday, Friday};

আমি এর একটি উদাহরণ তৈরি করতে enumএবং এটি একটি যথাযথ মান দিয়ে শুরু করতে চাই, তাই আমি করি:

Days day = Days.Saturday;

এখন আমি আমার চলক বা উদাহরণটি একটি বিদ্যমান enumমান দিয়ে পরীক্ষা করতে চাই , তাই আমি করি:

if (day == Days.Saturday)
{
    std::cout << "Ok its Saturday";
}

যা আমাকে সংকলনের ত্রুটি দেয়:

ত্রুটি: 'এর আগে প্রত্যাশিত প্রাথমিক-এক্সপ্রেশন।' টোকেন

সুতরাং পরিষ্কার করে বলার মধ্যে পার্থক্য কী:

if (day == Days.Saturday) // Causes compilation error

এবং

if (day == Saturday)

?

এই দুটি আসলে কী বোঝায়, এটির মধ্যে একটি ঠিক আছে এবং একটি সংকলনের ত্রুটির সৃষ্টি করে?


4
আমি জানি, আমি জানতে চাই কেন এটি আমাকে ত্রুটি দিচ্ছে!
রিকা

1
এটি এখানে বুধবার। সি ++ কম্পাইলারের জন্য আপনার কাছে প্রচুর সিনট্যাক্স ত্রুটি রয়েছে। 'এনুম' থেকে শুরু।
Öö তিবি

1
@ হোসেইন, কারণ এনামগুলি উভয় ভাষায় একই সিনট্যাক্স (এবং শব্দার্থবিজ্ঞান) নয়। নতুন ভাষায় কোনও বৈশিষ্ট্য ব্যবহার করার চেষ্টা করার সময় ত্রুটি হওয়ার পরে আমি প্রথমে যা করি তা হ'ল সেই ভাষায় বাক্য গঠন (বা যদি এটি সম্ভব হয়) সন্ধান করুন।
ক্রিস

@ ক্রিস: আমি জানি, আমিও ঠিক একই জিনিসটি করেছি opeআমি আমার উত্তর পেয়েছি question প্রশ্নটি আরও পরিষ্কার হওয়ার জন্য আমি আপডেটও করেছি the উপায় দ্বারা আপনাকে ধন্যবাদ;)
রিকা

17
" যতদূর আমি জানি এই দুটি ভাষায় এনামের ঘোষণা এবং ব্যবহার একই। " আপনার সমস্যা এখনই আছে। সি # সি ++ এর মতো একই ভাষা নয় । বিশেষত, এনামগুলির জন্য তাদের বিভিন্ন বাক্য গঠন রয়েছে।
রব

উত্তর:


350

এই কোডটি ভুল:

enum Days {Saturday, Sunday, Tuesday, Wednesday, Thursday, Friday};
Days day = Days.Saturday;
if (day == Days.Saturday)

কারণ Daysকোন সুযোগ নেই, না বস্তু। এটি এক প্রকারের। এবং প্রকারগুলির নিজস্ব সদস্য নেই। আপনি যা লিখেছেন তার সমতুল্য std::string.clearstd::stringএটি একটি প্রকার, সুতরাং আপনি .এটি ব্যবহার করতে পারবেন না । আপনি একটি শ্রেণীর উদাহরণ ব্যবহার .করুন ।

দুর্ভাগ্যক্রমে, এনামগুলি যাদুকর এবং তাই উপমাটি সেখানে থামে। কারণ একটি শ্রেণীর সাথে, আপনি std::string::clearসদস্য ফাংশনটিতে একটি পয়েন্টার পেতে করতে পারেন , তবে সি ++ 03 Days::Sundayএ অবৈধ। (যা দুঃখজনক) এটি কারণ সি ++ (কিছুটা) সি এর সাথে পিছনের দিকে তুলনীয়, এবং সি এর কোনও নেমস্পেস ছিল না, সুতরাং গণনাটি বিশ্বব্যাপী নেমস্পেসে থাকতে হয়েছিল। সুতরাং বাক্য গঠনটি সহজভাবে:

enum Days {Saturday, Sunday, Tuesday, Wednesday, Thursday, Friday};
Days day = Saturday;
if (day == Saturday)

সৌভাগ্যক্রমে, মাইক সিমুর লক্ষ্য করেছেন যে এটি সি ++ 11 এ সম্বোধন করা হয়েছে। পরিবর্তন enumকরুন enum classএবং এটি তার নিজস্ব সুযোগ পায়; তাই Days::Sundayকেবল বৈধ নয়, তবে অ্যাক্সেসের একমাত্র উপায় Sunday। সুখের দিনগুলি!


254
ভাগ্যক্রমে, আপনার অভিযোগ সি ++ 11 এ সম্বোধন করা হয়েছে। পরিবর্তন enumকরুন enum classএবং এটি তার নিজস্ব সুযোগ পায়; তাই Days::Sundayকেবল বৈধ নয়, তবে অ্যাক্সেসের একমাত্র উপায় Sunday। সুখের দিনগুলি!
মাইক সিমুর

10
সি ++ ত্রুটি বার্তাগুলি পছন্দ করে ... তারা প্রমাণ করে যে ভাষাটি এমনকি প্রতিক্রিয়া জানাতে জটিল to আমি এটিকে একটি 'প্রাথমিক-এক্সপ্রেশন' বলে মনে করি এটি একটি অবজেক্ট বা স্কোপ বা অন্য কোনও জিনিস যা কোনও ধরণের নয়। সম্ভবত একটি টাইপ একটি 'গৌণ-এক্সপ্রেশন'। এবং সি ++ বিকাশকারী কী ডট অপারেটর বলতে পারে সি ++ সংকলক কেবল একটি 'টোকেন' কল করতে পারে। যখন ত্রুটি বার্তাগুলি বুঝতে অসুবিধা হয় তখন আমার মনে হয় এমন ভাষাতে কিছু ভুল আছে।
ট্র্যাভিস

4
@ ট্র্যাভিস: en.cppreferences.com/w/cpp/language/… । একটি প্রাথমিক এক্সপ্রেশন একটি অভিব্যক্তির মধ্যে প্রথম জিনিস, সাধারণত একটি নাম বা পরিবর্তনশীল বা একটি আক্ষরিক। দ্বিতীয় অংশ হিসাবে, আমি মধ্যে একটি বড় পার্থক্য দেখতে পাচ্ছ '.' tokenএবং dot operatorঅন্যান্য তুলনায় এটি একটি টোকেন এবং একটি অপারেটর আছে, এবং এটি বরং একটি নাম চেয়ে, সঠিক প্রতীক দেখায়।
মাকিং হাঁস

@ মাইক সিমুর আমি কয়েকটি সংকলক স্কোপ রেজোলিউশন অপারেটর ছাড়াই এনামগুলিতে অ্যাক্সেস করার চেষ্টা করেছি এবং এটি কার্যকর বলে মনে হচ্ছে। আপনি বলেছেন সি ++ 11 এর একমাত্র উপায়, কিছু কারণে আমি কেবল বিশ্বব্যাপী হিসাবে এনাম মানগুলি অ্যাক্সেস করতে পারি, :: এর দরকার নেই:
জেব্রাফিশ

1
@ টিটোনমারিস: আপনার যদি থাকে তবে আপনি enumকোনও সুযোগ বা বিশ্বব্যাপী সুযোগ ( ::Saturday) ব্যবহার করতে পারবেন না । আপনি একটি থাকে তাহলে enum class(যা একটি ভিন্ন জিনিস), তারপর আপনি আছে ব্যবহার Days::Saturday
হাঁসকে মোচ দেওয়া হচ্ছে

24

এটি আপনার এনাম ভেরিয়েবলটি ঘোষণা করতে এবং তুলনা করতে যথেষ্ট হবে:

enum Days {Saturday, Sunday, Tuesday, Wednesday, Thursday, Friday};
Days day = Saturday;
if (day == Saturday) {
    std::cout << "Ok its Saturday";
}

(দিন == দিন.স্যাটুড্ডে) বলা কেন ভুল? তাদের অবশ্যই একই হতে হবে, তবে সংকলক কেন এটি সম্পর্কে অভিযোগ করছে?
রিকা

1
@ আপনার এনামে ঘোষিত মানগুলি শ্রেণি বা কাঠামোর সদস্য ভেরিয়েবলগুলির মতো আচরণ করে না os এটি ব্যবহারের জন্য সঠিক সিনট্যাক্স নয়
গণিতবিদ

2
@ হোসেইন: কারণ Daysকোনও সুযোগ বা উদ্দেশ্য নয়। এটি এক প্রকারের। এবং প্রকারগুলির নিজস্ব সদস্য নেই। std::string.clearএকই কারণে সংকলন করতে ব্যর্থ।
মাকিং হাঁস

7
@ হোসেইন: কারণ এটি সি ++ তে কর্মীরা কীভাবে কাজ করে না। অপ্রকাশিত গণনাগুলি তাদের মানগুলিকে আশেপাশের নেমস্পেসে রাখে; স্কোপযুক্তগুলি ( enum class, ২০১১ সালে নতুন) এর নিজস্ব সুযোগ রয়েছে এবং স্কোপ অপারেটর ব্যবহার করে অ্যাক্সেস করা হয় Days::Saturday। সদস্য অ্যাক্সেস অপারেটর ( .) কেবলমাত্র শ্রেণীর সদস্যদের অ্যাক্সেস করতে ব্যবহৃত হয়।
মাইক সিমুর

@মুডিংডুক এবং মাইকসিমুর আপনারা কেউ কি উত্তর হিসাবে উত্তরটি পোস্ট করবেন? কারণ এই প্রশ্নটি জারি করে আমি ঠিক তখনই ছিলাম;)
রিকা

22

এর বেশিরভাগটি আপনাকে সংকলনের ত্রুটি দেয়।

// note the lower case enum keyword
enum Days { Saturday, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday };

এখন, Saturday, Sunday, ইত্যাদি টপ লেভেল খালি ধ্রুবক হিসাবে ব্যবহার করা যেতে পারে, এবং Daysএকটি টাইপ হিসেবে ব্যবহার করা যেতে পারে:

Days day = Saturday;   // Days.Saturday is an error

এবং একইভাবে পরে, পরীক্ষা করার জন্য:

if (day == Saturday)
    // ...

এই enumমান খালি ধ্রুবক মত - তারা উন (যতক্ষণ না আপনি সি ++ 11 ব্যবহার করছেন: কম্পাইলার থেকে সামান্য অতিরিক্ত সাহায্যের সাথে - -scoped enum শ্রেণীর ) তারা নেই উদাহরণস্বরূপ বস্তু বা কাঠামো সদস্যদের মত encapsulated, এবং আপনি হিসাবে তাদের পড়ুন না পারেন সদস্যদের এর Days

আপনি সি ++ 11 দিয়ে যা খুঁজছেন তা আপনার কাছে থাকবে , যা একটিটির সাথে পরিচয় করে enum class:

enum class Days
{
    SUNDAY,
    MONDAY,
    // ... etc.
}

// ...

if (day == Days::SUNDAY)
    // ...

নোট করুন যে এই সি ++ বেশ কয়েকটি উপায়ে সি থেকে কিছুটা আলাদা, একটি হ'ল enumভেরিয়েবল ঘোষণার সময় সি-এর কীওয়ার্ড ব্যবহারের প্রয়োজন :

// day declaration in C:
enum Days day = Saturday;

আমি প্রশ্নটি আপডেট করেছি, আমি মনে করি এটি এখন আরও স্পষ্ট হয়ে গেছে আমি ঠিক কী পরে :) ওয়েল থ্যানকিউ :)
রিকা

13

আপনি ইচ্ছেমতো স্কোপগুলি ব্যবহার করতে একটি কৌশল ব্যবহার করতে পারেন, কেবল এনামকে এভাবে ঘোষণা করুন:

struct Days 
{
   enum type
   {
      Saturday,Sunday,Tuesday,Wednesday,Thursday,Friday
   };
};

Days::type day = Days::Saturday;
if (day == Days::Saturday)

9

ইফ-স্টেটমেন্টগুলির একগুচ্ছ ব্যবহার করার পরিবর্তে, এনামগুলি স্টেটমেন্টগুলিতে স্যুইচ করতে ভাল ndণ দেয়

আমি আমার গেমের জন্য যে স্তরের বিল্ডার তৈরি করছি তাতে আমি কিছু এনাম / সুইচ সংমিশ্রণ ব্যবহার করি।

সম্পাদনা: অন্য একটি জিনিস, আমি দেখতে পাচ্ছি যে আপনি অনুরূপ সিনট্যাক্স চান;

if(day == Days.Saturday)
etc

আপনি এটি সি ++ এ করতে পারেন:

if(day == Days::Saturday)
etc

এখানে একটি খুব সাধারণ উদাহরণ:

EnumAppState.h

#ifndef ENUMAPPSTATE_H
#define ENUMAPPSTATE_H
enum eAppState
{
    STARTUP,
    EDIT,
    ZONECREATION,
    SHUTDOWN,
    NOCHANGE
};
#endif

Somefile.cpp

#include "EnumAppState.h"
eAppState state = eAppState::STARTUP;
switch(state)
{
case STARTUP:
    //Do stuff
    break;
case EDIT:
    //Do stuff
    break;
case ZONECREATION:
    //Do stuff
    break;
case SHUTDOWN:
    //Do stuff
    break;
case NOCHANGE:
    //Do stuff
    break;
}

এখানে সুন্দর জিনিসটি হ'ল সংকলকরা আপনাকে বলবে যে আপনি কোনও মামলা স্থাপন করা মিস করেছেন
ক্রিস

এই ক্ষেত্রে আপনার ক্লাস এনাম ব্যবহার করা উচিত নয়?
রিকা

1
এনাম কেবল সি ++ এ কেবলমাত্র একটি ডেটাটাইপ, সুতরাং আমি উপরে একটি .h ফাইলটিতে যেমন এনামের ঘোষণা দিয়েছিলাম এবং তারপরে আপনি যেটি .cpp ফাইল এটি ব্যবহার করতে চান তাতে সেই ফাইলটি অন্তর্ভুক্ত করে এনুমকে অ্যাক্সেস দেবে। সবেমাত্র লক্ষ্য করা গেছে আমি আমার .cpp উদাহরণে # অন্তর্ভুক্ত করতে ভুলে গেছি। সম্পাদনা করা।
ডিন নাইট

এছাড়াও, আমি অন্য কাউকে দেখছি যে সি ++ এ এনামগুলি বিশ্বব্যাপী। আমার অভিজ্ঞতায় এনামগুলি আমার উপরের উপায়ে ব্যবহার করে, আমি কেবলমাত্র .H অন্তর্ভুক্ত করলেই আমি সেগুলি অ্যাক্সেস করতে পারি। সুতরাং এটি বিশ্বব্যাপী অ্যাক্সেস বন্ধ করে দেয় বলে মনে হয়, যা সর্বদা ভাল। সম্পাদনা: মনে হচ্ছে আমি যদি অজান্তে সি ++ 11 উপায়ে এনামগুলি ব্যবহার করি তবে আমি যদি জিনিসগুলি সঠিকভাবে পড়ছি ...
ডিন নাইট

8

আপনি যদি এখনও সি ++ 03 ব্যবহার করে থাকেন এবং এনাম ব্যবহার করতে চান তবে আপনার উচিত একটি নেমস্পেসের ভিতরে এনাম ব্যবহার করা। উদাহরণ:

namespace Daysofweek{
enum Days {Saturday, Sunday, Tuesday,Wednesday, Thursday, Friday};
}

আপনি নামের জায়গার বাইরে এনাম ব্যবহার করতে পারেন,

Daysofweek::Days day = Daysofweek::Saturday;

if (day == Daysofweek::Saturday)
{
    std::cout<<"Ok its Saturday";
}

7

আপনি দৃ strongly়ভাবে টাইপযুক্ত গণনা খুঁজছেন , সি ++ 11 স্ট্যান্ডার্ডে উপলব্ধ একটি বৈশিষ্ট্য । এটি স্কোপ মান সহ শ্রেণিতে রূপান্তরিত করে।

আপনার নিজের কোড উদাহরণ ব্যবহার করে এটি হ'ল:

  enum class Days {Saturday, Sunday, Tuesday,Wednesday, Thursday, Friday};
  Days day = Days::Saturday;

  if (day == Days::Saturday)  {
    cout << " Today is Saturday !" << endl;
  }
  //int day2 = Days::Sunday; // Error! invalid

::সি ++ স্ট্যান্ডার্ড পূর্বে সি ++ 11 টার্গেট করা হলে গণনাগুলিতে অ্যাক্সেসর হিসাবে ব্যবহার করা ব্যর্থ হবে। তবে কিছু পুরানো সংকলক এটি সমর্থন করে না, পাশাপাশি কিছু আইডিই কেবল এই বিকল্পটিকে ওভাররাইড করে এবং একটি পুরানো সি ++ এসটিডি সেট করে।

আপনি যদি জিসিসি ব্যবহার করে থাকেন, -std = c ++ 11 বা -std = gnu11 সহ সি + 11 সক্ষম করুন ।

খুশী থেকো!


1
আপনি লিখতে ভুলে গেছেন enum class Days { ...
মার্টিন হেনিংস

প্রকৃতপক্ষে. এটা ঠিক! ধন্যবাদ।
অ্যালেক্স বাইথ

6

এটি সি ++ এ কাজ করা উচিত নয়:

Days.Saturday

দিনগুলি এমন কোনও সুযোগ বা অবজেক্ট নয় যার মধ্যে আপনি ডট অপারেটরের মাধ্যমে অ্যাক্সেস করতে পারবেন এমন সদস্য থাকে। এই বাক্য গঠনটি কেবল একটি সি # -ism এবং সি ++ এ আইনী নয়।

মাইক্রোসফ্ট দীর্ঘকাল ধরে একটি সি ++ এক্সটেনশন বজায় রেখেছে যা আপনাকে স্কোপ অপারেটর ব্যবহার করে শনাক্তকারীদের অ্যাক্সেস করতে দেয়:

enum E { A, B, C };

A;
E::B; // works with Microsoft's extension

তবে এটি সি ++ 11 এর আগে অ-মানক। C ++ 03 এ এনামে ঘোষিত শনাক্তকারীরা কেবল এনাম টাইপের মতো একই স্কোপে উপস্থিত থাকে।

A;
E::B; // error in C++03

সি ++ 11 এনাম নামের সাথে এনাম শনাক্তকারীদের যোগ্যতা অর্জনকে বৈধ করে তোলে এবং এনাম ক্লাসগুলিও প্রবর্তন করে, যা সনাক্তকারীদের আশেপাশের সুযোগে রাখার পরিবর্তে একটি নতুন সুযোগ তৈরি করে।

A;
E::B; // legal in C++11

enum class F { A, B, C };

A; // error
F::B;

4

সি ++ (সি ++ 11 বাদে) এনাম রয়েছে, সেগুলির মানগুলি বিশ্বব্যাপী নেমস্পেসে "ফাঁস" হয়ে গেছে।
আপনি যদি এগুলি ফাঁস করতে চান না (এবং এনাম টাইপটি ব্যবহার করার প্রয়োজন নেই) তবে নিম্নলিখিতগুলি বিবেচনা করুন:

class EnumName {  
   public:   
      static int EnumVal1;  
      (more definitions)  
};  
EnumName::EnumVal1 = {value};  
if ([your value] == EnumName::EnumVal1)  ...

3

দুঃখের বিষয়, এনামের উপাদানগুলি 'গ্লোবাল'। আপনি তাদের দ্বারা অ্যাক্সেস day = Saturday। এর অর্থ হল যে আপনার থাকতে পারে না enum A { a, b } ;এবং enum B { b, a } ;তারা দ্বন্দ্বের মধ্যে রয়েছে।


2
আপনি enum classসি ++ 11 এ ব্যবহার না করা পর্যন্ত এটি। তার আগে, আপনাকে ডামি ক্লাস করতে হবে।
ক্রিস

সি ++ 11 জানেন না। আমি ধরে নিচ্ছি যে প্রশ্নটি সি ++ কে বোঝায়। হ্যাঁ, ক্লাস বা নেমস্পেসগুলি ব্যবহার করা কৌশলটি করবে।
গ্রজেগোর্জ

@ গ্রজেগোর্জ: আমার মনে হয় ক্রিস নতুন সদ্য চালু হওয়া এনাম ক্লাসের কথা উল্লেখ করছে যা জোরালোভাবে টাইপ করা এনাম সরবরাহ করে।
রিকা

@ হোসেইন: এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ। আমি নম্বর শ্রেণীর ব্যাখ্যা পেয়েছি এবং ক্রিস কী বিষয়ে কথা বলছিলেন তা আমি জানি। অনেক ধন্যবাদ.
গ্রজেগোর্জ

@ গ্রজেগোর্জ: আমার অসম্মানের অর্থ ছিল না, কেবল ভেবেছিলাম যে আমি সাহায্য করছিলাম, কোনও সম্ভাব্য ভুল বোঝাবুঝির জন্য দুঃখিত। আমি আপনার সময় এবং আমাকে সাহায্য করার জন্য আপনাকে আবার ধন্যবাদ জানাই;)
রিকা

3

সি ++ এ থাকা এনামগুলি আপনার দেওয়া নামগুলিতে মুখোশযুক্ত পূর্ণসংখ্যার মতো হয়, যখন আপনি আপনার এনাম-মানগুলি ঘোষণা করেন (এটি কীভাবে কাজ করে তা কেবল এটি একটি সংজ্ঞা নয়)।

তবে আপনার কোডে দুটি ত্রুটি রয়েছে:

  1. enumসমস্ত ছোট ক্ষেত্রে বানান
  2. Days.শনিবারের আগে আপনার দরকার নেই ।
  3. যদি এই এনামটি কোনও শ্রেণিতে ঘোষণা করা হয় তবে ব্যবহার করুন if (day == YourClass::Saturday){}

ওপি 16 মিনিট প্রাথমিক পোস্ট (পরে বানান / কেস পরিবর্তিত সংস্করণ 1 থেকে সংস্করণ 2 )।
পিটার মর্টেনসেন

1

আমি মনে করি আপনার মূল সমস্যাটি এর .পরিবর্তে ::ব্যবহার করা হবে যা নাম স্থানটি ব্যবহার করবে।

চেষ্টা করুন:

enum Days {Saturday, Sunday, Tuesday, Wednesday, Thursday, Friday};
Days day = Days::Saturday;
if(Days::Saturday == day)  // I like literals before variables :)
{
    std::cout<<"Ok its Saturday";
}

এটি কাজ করে না: Days::আপনার উদাহরণ হিসাবে স্কোপটি ব্যবহার করতে , আপনাকে অবশ্যই enum class Daysসি ++ 03 + মাইক্রোসফ্ট এক্সটেনশন বা সি ++ 11 ব্যবহার করে সংখ্যার সংজ্ঞা দিতে হবে এবং ব্যবহার করতে হবে ।
ফুটবল

@ ফুটবল, উপরেরটি বোরল্যান্ড সি ++ বিল্ডারের সাথে ছুটেছিল। সি ++ এর গন্ধ / সংস্করণ প্রশ্নে নেই।
জেমস ওরাভেক

1
আপনার বোরল্যান্ড সি ++ বিল্ডারের সংস্করণ অবশ্যই সি ++ 11 বা আরও নতুন ব্যবহার করা উচিত। জিসিসি এবং ঝনঝন উভয় ত্রুটি বা সতর্কবার্তা দেয় যদি আপনার উদাহরণ কম্পাইল করা হয় -std=c++98বা -std=c++03। ঝনঝন বেশ স্পষ্ট হল: warning: use of enumeration in a nested name specifier is a C++11 extension
আগামী

1

আমরা যদি কঠোর প্রকারের সুরক্ষা এবং স্কোপড এনাম চাই, তবে enum classসি ++ 11 এ ব্যবহার করা ভাল।

যদি আমাদের সি ++ 98 এ কাজ করতে হয় InitializeSahib, Sanতবে স্কোপড এনামটি সক্ষম করতে আমরা প্রদত্ত পরামর্শ ব্যবহার করতে পারি ।

আমরা যদি কঠোর প্রকারের সুরক্ষাও চাই, তবে অনুসরণ কোডটি এর মতো কিছু বাস্তবায়ন করতে পারে enum

#include <iostream>
class Color
{
public:
    static Color RED()
    {
        return Color(0);
    }
    static Color BLUE()
    {
        return Color(1);
    }
    bool operator==(const Color &rhs) const
    {
        return this->value == rhs.value;
    }
    bool operator!=(const Color &rhs) const
    {
        return !(*this == rhs);
    }

private:
    explicit Color(int value_) : value(value_) {}
    int value;
};

int main()
{
    Color color = Color::RED();
    if (color == Color::RED())
    {
        std::cout << "red" << std::endl;
    }
    return 0;
}

কোডটি কার্যকর সি ++ তৃতীয়: আইটেম 18 বইয়ের মাসের উদাহরণ উদাহরণ থেকে সংশোধিত হয়েছে


-15

সবার আগে, এনামে 'ই' তৈরি করুন, 'ই' কে ছোট আকারের হিসাবে তৈরি করুন।

দ্বিতীয়ত, 'দিনগুলি' শনিবারে 'দিন' নাম টাইপ করুন।

তৃতীয় ... নিজেকে একটি ভাল সি ++ বই কিনুন।


5
দুঃখিত, আপনি এই সমস্ত ডাউন-ভোট পেয়েছেন (মানে, উত্তরটি প্রকারের জন্য প্রাপ্য হয়) তবে এর অর্থ এই নয় যে আপনাকে সম্প্রদায়টি 6 বছরের জন্য ছেড়ে চলে যেতে হবে। ফিরে এসে আমাদের সাথে যোগ দিন। আপনারও কিছু অবদান রাখার আছে। সাহায্যকারী হও. জ্ঞান ভাগ করুন।
গ্যাব্রিয়েল স্টেপলস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.