enum این اوپراتور رو نداره و این ارور بهمین خاطره. در حالت کلی از تعریف operator میشه استفاده کرد (مثل کاری که دوست مون انجام دادن) اما اگر قراره از کاربر مقادیر متنی نظیر NO و YES گرفته بشه روش بهتر استفاده از map هستش. مثال:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(){
map<string, bool> answer_list = { {"NO",false}, {"FALSE",false}, {"TRUE",true}, {"YES", true} };
string answer;
cin >> answer;
if (answer_list.at(answer)) cout << "you said OK";
}
البته در این کد چنان چه جوابی که از کاربر دریافت میشه غیر از اون چهار موردی باشه که تعیین کردیم باعث میشه که اجرای برنامه با ارور روبرو بشه و بنابراین در صورت نیاز میشه این کار رو انجام داد:
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main(){
map<string, bool> answer_list = { {"NO",false}, {"FALSE",false}, {"TRUE",true}, {"YES", true} };
string answer;
cin >> answer;
try{
if (answer_list.at(answer)) cout << "you said OK";
} catch (out_of_range){
cout << "invalid answer";
return 1;
}
}
حتی میتونین جواب دریافتی از کاربر رو ابتدا به حروف بزرگ تبدیل کنید تا کوچک و بزرگ بودن حروف عملکرد متفاوتی نداشته باشه