Попытка выяснить решение для реализации операторов сравнения на C++. У меня есть структура, для которой я хочу, когда она сравнивается с другой структурой своего типа. Я достал кучу кода просто держать все минималенОператоры управления перегрузкой
struct HuffNode{
//Comparison stuff.. needed in Pqueue
bool operator> (const HuffNode&) const;
bool operator>=(const HuffNode&) const;
bool operator==(const HuffNode&) const;
bool operator<=(const HuffNode&) const;
bool operator< (const HuffNode&) const;
};
Вот мой тестовый код, как я могу идти о видя, если это работает. Определите только две структуры узлов, а затем попробуйте их сравнить. Прямо сейчас я думал, я определил это так == всегда возвращает истину, так что утверждение «HEYYYYYY111» всегда должен печатать ..
HuffNode *hn1 = new HuffNode(0,0,0,0);
HuffNode *hn2 = new HuffNode(0,0,0,0);
if(hn1 == hn2){
cout << "HEYYYYYY111" << endl;
}
Сейчас у меня есть постоянная просто определяется так же, как это. Просто для тестирования это всегда будет возвращать true, а цикл If выше должен распечатываться. Однако это не
bool HuffNode::operator==(const HuffNode &f) const {
return true;
}
У кого-нибудь есть идеи, как это решить? Не совсем уверен. Единственное, о чем я мог думать, - это не правильные аргументы. Моя цель - использовать это в классе шаблона, чтобы я мог сравнивать две структуры.
Вы сравниваете указатели. Вместо этого сравните объекты. – juanchopanza
Вы сравниваете указатели, которые вряд ли будут одинаковыми. –
Вам также необходимо реализовать один оператор, clasically 'operator <'. Все остальные операторы могут быть реализованы в терминах этого оператора. –