Вероятно, это ошибка. Без рассмотрения кода невозможно узнать наверняка, но качество реализации указателя с подсчетом ссылок наводит на размышления. Плохой дизайн, особенно в области управления ресурсами, не является неслыханным в сообществе C ++ </bitter sarcasm>
.
С учетом вышесказанного указатели с подсчетом ссылок полезны, когда у вас есть объекты с неопределенным сроком службы, которые очень дороги в создании, или состояние которых необходимо разделить между несколькими пользователями. В зависимости от базовой архитектуры соединения с базой данных могут соответствовать этому определению: если каждое соединение с базой данных должно проходить аутентификацию через глобальный Интернет, скажем, это может стоить ваших усилий для сохранения одного соединения и его повторного использования, вместо создания новых соединений и утилизации из них, как вы идете.
Но если я вас правильно понял, у вас нет ни одного объекта подключения к базе данных с набором пересчитанных указателей, указывающих на него. Скорее, у вас есть объект подключения к базе данных, набор обычных указателей на него и набор пересчитанных указателей на эти указатели . Это безумие, и почти наверняка результат замешательства первоначальных разработчиков. Альтернативой является то, что это был акт преднамеренного зла, например, обеспечить безопасность работы. Если это так, они, должно быть, потерпели неудачу, поскольку никто из преступников все еще не работает на вашу компанию.