Folder
class File: public Element {}
class Folder: public Element{}
Как отсортировать массив из этих классов? Алгоритмов сортировки есть 2: когда идут сначала папки, потом файлы (как в винде) и когда папки и файлы вперемешку (как в маке). Нужно написать оба.
Просто в одной компании видел способ решить эту задачу через dynamic_cast, то есть
auto comparator = [](const Element *first, const Element *second) {
if (dynamic_cast<first> == File* && dynamic_cast<second> == File*)
...
}
Мне кажется, это както слишком для такой вроде бы простой задачи
Не тот, наверное, чат, но... Не лучше ли завести в классе Element виртуальную функцию, возвращающую приоритет элемента и перегрузить его для обоих классов? У папки – выше, у файла – ниже. В зависимости от способа сортировки, ты либо учитываешь этот приоритет, либо нет
а как же просто подставлять два разных компаратора?
Обсуждают сегодня