-1 голос 3571 просмотр 5.01.2017 / 21:02
Витаминыч
Как лучше реализовать метод сравнения в классе и как его потом использовать?На данный момент в main.cpp (вне объявления класса) есть такой метод:
Теперь же настала пора вынести код класса в отдельный файл (Product.cpp), по идее этот метод должен туда перекочевать, чтобы наследники могли его использовать. И тут появились затруднения: в Java это уже все продумано, просто переопределяй метод для своего класса и пользуйся. А как такое провернуть в С++? В дальнейшем планируется использовать этот метод при сортировке. В поиске нашел только для строк (string::compare) но мне надо для объектов... Ответы
2 голоса 1. Элементы сравниваются с помощью оператора < 2. Можно передать Comparator, который возвращает true / false, и действует так же как оператор в пункте 1. 0 голосов
Изм. vlavolk
от 6.01.2017 / 11:33
0 голосов bool operator==(const X& lhs, const X& rhs){ / do actual comparison / } Посмотри всроенные ф-ии типа qsort
Изм. Naik
от 5.01.2017 / 22:07
0 голосов 0 голосов Product::compare(prod1, prod2) - куда это писать? Пробовал в условие, ничего не вышло, хотя странно, он же возвращает значение.. Т.е. if (Product::compare(prod1, prod2) == -1) {} ошибочно. Как это правильно называется и где про это почитать? (на русском)
5.01.2017 / 22:03
vlavolk
в секцию public, а затем prod1.compare(prod2)
5.01.2017 / 22:27
Витаминыч
И как тогда сам метод будет выглядеть? prod1.compare(prod1, prod2) выглядит ужасно, но работает в рамках одного файла, в отдельный пока не выносил
8.01.2017 / 23:58
Ксакеп
Если захочешь вынести в отдельный файл, то можешь ещё почитать о дружественных функциях (friend function)
Всего: 5
|
Реклама |
https://m.habrahabr.ru/post/132014/