Я создал класс Fraction в C++, который хранит числитель и знаменатель дроби и имеет различные методы для работы с этими числами. Как сравнить содержимое одного объекта с другим? Моя мысль заключалась в том, чтобы передать указатель на второй объект методу первого объекта, который выполняет сравнение. Любая помощь приветствуется.Как сравнить переменные-члены двух объектов в C++?
ответ
Вы должны просто перегрузить == operator.
Вы можете перегрузить оператор ==
, как это:
bool operator==(const Fraction &left, const Fraction &right) {
// Warning: this check is oversimplified; it may overflow!
return left.num*right.denom == right.num*left.denom;
}
Теперь вы можете сделать это:
Fraction a(10, 20);
Fraction b(2, 4);
if (a == b) {
...
}
Общих сведения о перегрузке операторов: link.
Другое предложение - использовать метод 'bool operator == (const Fraction & other)', определенный в классе. –
@ThomasMatthews Хотя перегрузка оператора-члена '==' является допустимой альтернативой, я предпочитаю использовать не-членную версию оператора '==', потому что он более «симметричен». – dasblinkenlight
Если вы сравниваете объект с одним и тем же типом, вы можете напрямую реализовать функции, которые сравнивают элементы, даже если они являются частными. Если вы хотите проверить на равенство, неравенство и ниже/выше, то я полагаю, что вы перегружать соответствующие операторы:
Если, однако, вы хотите, чтобы сравнить объекты разных типов, то у вас есть несколько вариантов. Вы можете реализовать методы доступа («getters») и использовать их в методе сравнения, вы можете изменить права доступа к этим переменным (не рекомендуется), или вы можете использовать ключевое слово friend
, но используйте его экономно.
Посмотрите на это. Operator overloading
Я рекомендую вам объявить и определить соответствующие перегруженные операторы. Ответы по вышеуказанной ссылке дают вам указания о том, как это сделать. Это позволит вам использовать операторов в экземплярах классов (объектов) с тем же естественным синтаксисом, который вы использовали бы для встроенных типов.
- 1. Как сравнить свойства двух объектов
- 2. Как сравнить свойства двух объектов?
- 3. Сравнить C# комплекс объектов
- 4. Джанго сравнить значения двух объектов
- 5. Как сравнить конкретную строку двух объектов массива?
- 6. Symfony3 - как сравнить свойства двух разных объектов
- 7. Как сравнить продолжительность двух DateTim объектов LINQ
- 8. Сравнить значения объектов в двух списках
- 9. Как сравнить содержимое двух экземпляров в C#?
- 10. Как сравнить значения двух указателей в C
- 11. Как сравнить элементы двух матриц в c
- 12. Как сравнить два списка объектов в C#
- 13. Как сравнить два списка объектов в C#?
- 14. PHP - сравнить структуру двух объектов JSON
- 15. Сравнить эквивалентность двух объектов произвольных типов
- 16. FetchXML filter - сравнить атрибуты двух разных объектов?
- 17. В Java, как я могу сравнить значения двух объектов?
- 18. Сравнить два списка объектов C#
- 19. Как сравнить значения двух объектов для равенства в JQuery
- 20. Drools: Как сравнить атрибуты двух разных объектов в слюни?
- 21. Как сравнить данные двух одинаковых объектов в Java
- 22. Как сравнить содержимое двух строковых объектов в PowerShell
- 23. Как сравнить значения параметров двух объектов в Java?
- 24. C# как сравнить диапазон разностей двух чисел
- 25. C++. Как сравнить 2 вектора объектов
- 26. слияние двух объектов в C#
- 27. Как сравнить более двух строк?
- 28. Как сравнить значение двух объектов Double с помощью метода compare()?
- 29. Как сравнить два списка объектов?
- 30. Сравнение свойств двух объектов просто в C#
Вам не нравится прототип оператора сравнения [_standard_] (http://stackoverflow.com/questions/13829704/overloading-the-comparison-operators-c) со ссылкой на оба объекта? –
Вы можете написать свою собственную функцию перегрузки оператора «==» для сравнения двух объектов –
, пожалуйста, не перегружайте оператор присваивания для сравнения. – clcto