Что ж, OOP-esque способ состоял бы в том, чтобы создать необработанный указатель как закрытый член в классе-оболочке и выполнять действия над указателем только через методы, которые воздействуют на совместно используемый указатель.хотя это глупо, не правда ли?
Или вы можете сделать свой класс с указателем raw базовым классом для других классов и сделать указатель raw личным членом в классе.В этом отношении вы более или менее создаете абстрактный класс, который ничего не делает.Вместо этого ваши производные классы должны выполнять всю работу, и, поскольку они не могут получить доступ к необработанному указателю, компиляция не удастся ... хотя это не остановит кого-то от простого копирования значения необработанного указателя из общего указателя.
В конце концов, я думаю, что ваша лучшая политика состоит в том, чтобы вручную изменить все рассматриваемые функции, чтобы использовать либо общий указатель, либо необработанный указатель.Вы можете безопасно скопировать один общий указатель на другой, так почему бы просто не пойти по этому пути?
Редактировать: Я мог бы добавить, что независимо от того, используете ли вы общие указатели, это звучит так, как будто вы являетесь владельцемпроблемы.Если указатель был создан в одной области, он должен быть удален в этой области, если только функция, которой он передан по контракту , не станет владельцем указателя.Использование общего указателя в этом сценарии в конечном итоге приведет только к различным ошибкам.Похоже, у вас проблемы с дизайном глубже, чем просто обмен указателями.