Если это часть интерфейса, почему вы не хотите, чтобы пользователи вызывали его?Обратите внимание, что, как это, они могут назвать это: static_cast<BaseInterface&>(o).doSomething()
это просто неловкий способ сказать o.doSomething()
.Какой смысл использовать интерфейс ... если объект соответствует интерфейсу, то вы должны быть в состоянии использовать его, или я что-то упустил?
Поскольку вы на самом деле не являетесьЯ не вижу смысла делать код более сложным (как для класса, так и для пользователей класса) без какой-либо особой причины.Обратите внимание, что это полностью отличается от не-виртуального интерфейса в том, что в этой идиоме виртуальные функции не доступны публично (на любом уровне), в то время как в вашем случае намерение разрешить доступ и сделать его громоздким.