Ошибка использования строки в условном выражении

0

Я очень новичок в программировании и c++

Вот картина вопроса, который у меня есть:

http://i.imgur.com/tGJR3pO.jpg Изображение 174551 Раньше (не на картинке) я написал "строковые критерии", а затем предложил пользователю ввести "газ" или "общий". Я столкнулся с проблемой и не смог найти причину этой ошибки. Может ли кто-нибудь объяснить мне, что вызывает его, и как я могу это исправить?

  • 0
    Пожалуйста, скопируйте / вставьте соответствующий фрагмент кода и ошибки в текст в ваш вопрос ( отредактировав его).
  • 0
    Нет необходимости в изображении (вообще) с коротким фрагментом кода, когда вы могли бы создать минимальный тестовый пример такой длины.
Показать ещё 5 комментариев
Теги:
string
if-statement

2 ответа

0

Проверьте класс criteria.

Предположим: класс criteria - MyCriteria.

В вашем классе MyCriteria функциональный operator==(const char* pc) не возвращает правильное значение.

Вам нужно реализовать функцию для класса MyCriteria следующим образом:

bool operator==(const char* pc);

PS: Я предполагаю, что operator== функции operator== возвращает void в свой класс MyCriteria. А вот так:

class MyCriteria
{
public:
    void operator==(const char* pc)
    {
        // code
    }
};
  • 0
    Я предполагаю, что критерий является строкой
0

В c++ вы не можете сравнивать строку таким образом. Вы сравниваете их адрес вместо своих значений. Попробуйте сравнить строки в Google c++

Поведение по умолчанию для оператора == - это сравнение двух адресов объектов (если они одинаковы). если у вас есть 2 экземпляра, одно хранилище в 0xff0, а другое в 0xfff - сжатие, если (0xff0 == 0xfff) и, конечно, ответ ложный. сравните используемые для сравнения их значений - в этом случае - если содержание строки ("газ") равно другому содержимому строки. интересно то, что вы можете переопределить метод ==, чтобы действовать так, как вы хотите, - и в случае строки (как показано в соответствующем вопросе) == действует как сравнение

  • 1
    Почему вы не можете сравнить это так? if (myStdString == "gas") {}
  • 0
    Это должен быть критерий.compare («газ») == 0
Показать ещё 7 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню