Я не уверен, как реализовать (выразить в C ++) следующую проблему наиболее элегантным способом. Допустим, у нас есть библиотека, предоставляющая класс PerfectCounter
с богатым не виртуальным интерфейсом. Я хочу реализовать класс DisturbedCounter
, который наследуется от PerfectCounter
. Новый класс должен предоставлять тот же интерфейс, что и его родительский, и, например, разрешить вызов некоторых операторов (<
, >
, = =
и т. д.) для пар экземпляров обоих классов. Более того, я хочу запретить преобразования между двумя классами (в обоих направлениях).
DisturbedCounter
может наследоваться в частном порядке от PerfectCounter
. Он будет блокировать преобразования от DisturbedCounter
до PerfectCounter
. Тем не менее, мне придется явно объявить 99% API PerfectCounter
как public в DisturbedCounter
. Это означает много написания и обслуживания в будущем.
Есть ли лучший способ решить эту проблему?
Я могу использовать C ++ 17.