Решение задачи
В чем шибка? enum Test { PLUS, MINUS }; string a = "PLUS"; for(int i=0; i < 2; i++){ if(a == Test::P...
Условие:
В чем шибка? enum Test { PLUS, MINUS }; string a = "PLUS"; for(int i=0; i < 2; i++){ if(a == Test::PLUS){ cout << i; } }
Решение:
Ошибка в данном коде заключается в сравнении строки "PLUS" с элементом перечисления Test::PLUS. В языке программирования C++, строки и перечисления различаются и не могут быть прямо сравниваемыми.
Если вы хотите проверить, равна ли строка "PLUS" значению Test::PLUS, вам нужно сначала преобразовать строку в соответствующее значение перечисления. В данном случае, можно использовать условное выражение для проверки:
enum Test {
PLUS,
MINUS
};
string a = "PLUS";
for(int i=0; i < 2; i++){
if(a == (Test::PLUS == 0 ? "PLUS" : "MINUS")){
cout << i;
}
}
В этом коде мы используем условное выражение (Test::PLUS == 0 ? "PLUS" : "MINUS")
, чтобы преобразовать значение перечисления Test::PLUS в строку "PLUS" и сравнить его с переменной a
.
Похожие работы
Попробуй и другие функции
Решения по другим предметам
А
Б
В
М
П
С
Т
Э