Я очень новичок в программировании и c++
Вот картина вопроса, который у меня есть:
http://i.imgur.com/tGJR3pO.jpg Раньше (не на картинке) я написал "строковые критерии", а затем предложил пользователю ввести "газ" или "общий". Я столкнулся с проблемой и не смог найти причину этой ошибки. Может ли кто-нибудь объяснить мне, что вызывает его, и как я могу это исправить?
Проверьте класс 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
}
};
В c++ вы не можете сравнивать строку таким образом. Вы сравниваете их адрес вместо своих значений. Попробуйте сравнить строки в Google c++
Поведение по умолчанию для оператора == - это сравнение двух адресов объектов (если они одинаковы). если у вас есть 2 экземпляра, одно хранилище в 0xff0, а другое в 0xfff - сжатие, если (0xff0 == 0xfff) и, конечно, ответ ложный. сравните используемые для сравнения их значений - в этом случае - если содержание строки ("газ") равно другому содержимому строки. интересно то, что вы можете переопределить метод ==, чтобы действовать так, как вы хотите, - и в случае строки (как показано в соответствующем вопросе) == действует как сравнение