C ++ Inheritance QHash другой тип ключа - PullRequest
0 голосов
/ 11 декабря 2018

Я сейчас работаю над проектом, в котором у меня есть ситуация, которую я пытаюсь решить.У меня есть базовый класс, который имеет QHash, который хранит некоторые объекты.В настоящее время у меня есть два производных класса.Проблема состоит в том, что для одного производного класса я бы хотел, чтобы ключ был строкой, а для другого я бы хотел, чтобы он был int.Логика в базовом классе будет одинаковой независимо от типа ключа.Я знаю, что самый простой ответ - просто сделать ключ строкой и преобразовать int в строку в этом производном классе, когда я получу к нему доступ.Я пытался придумать более элегантное решение, но, может быть, это просто переосмыслило его.

Большая часть доступа осуществляется через функции, но иногда производный класс напрямую обращается к QHash.Это может быть изменено, хотя.Я думал о переопределении вызовов в производном классе, чтобы принять целое число, затем преобразовать его и вызвать версию базового класса.

Я не был уверен, есть ли способ заставить базовый класс QHash иметь универсальный ключ.Все функции тоже берут ключ, поэтому им придется следовать одному и тому же шаблону.

...