Скажите, у меня есть Базовый класс
struct Base {
int x;
};
И я знаю, что есть класс Derived
, который наследуется от Base
, но его определение на данный момент мне недоступно (он существует в последующем модуле).
Теперь у меня есть unordered_set<Base*>
, в котором будет храниться смесь объектов Base
и Derived
. Если я не укажу пользовательскую хеш-функцию, будет ли этот unordered_set работать правильно (т.е. хешировать элементы по их фактическому типу, так что два объекта Derived
с одинаковым x
, но разными в некоторых других производных полях, будут обрабатываться как разные )
Предполагая, что мне действительно нужна пользовательская хеш-функция, поскольку у меня пока нет определения Derived
, я хочу написать свою хеш-функцию как виртуальную функцию-член Base
, чтобы Derived
мог просто переопределите эту функцию для выполнения ее собственного хэша, когда unordered_set
вызывает ее. Это возможно? Или есть какое-то другое предпочтительное / устоявшееся решение этой проблемы?