В общем, это сложно. Вопрос "у кого есть ссылка на меня?" обычно не решаемо в C ++. Возможно, стоит взглянуть на более широкую картину конкретной проблемы, которую вы пытаетесь решить, и посмотреть, есть ли лучший способ.
Есть несколько вещей, которые я могу придумать, которые помогут вам на полпути, но ни одна из них не совсем то, что вы хотите.
Вы можете установить понятие "владеющий поток" для объекта и операции REJECT из любого другого потока, например, элементов Qt GUI. (Обратите внимание, что попытка сделать вещи потокобезопасными из потоков, отличных от владельца, на самом деле не обеспечит вам безопасность потоков, поскольку, если владелец не проверен, он может столкнуться с другими потоками.) Это, по крайней мере, дает вашим пользователям сбой. быстрое поведение.
Вы можете поощрять подсчет ссылок, когда видимые пользователем объекты являются легкими ссылками на сам объект реализации [и документируя это!]. Но решительные пользователи могут обойти это.
И вы можете объединить эти два - то есть у вас может быть понятие владения потоком для каждой ссылки , и затем объект узнает, кто владеет ссылками. Это может быть очень мощным, но на самом деле не идиотостойким.
Вы можете начать ограничивать то, что пользователи могут и не могут делать с объектом, но я не думаю, что стоит охватывать больше, чем очевидные источники непреднамеренной ошибки. Должны ли вы объявить оператора и частного, чтобы люди не могли указатели на ваши объекты? Должны ли вы мешать людям динамически распределять ваш объект? В некоторой степени это зависит от ваших пользователей, но имейте в виду, что вы не можете запретить ссылки на объекты, поэтому в конечном итоге игра в удар-моль сведет вас с ума.
Итак, вернемся к моему первоначальному предложению: повторно проанализируйте общую картину, если это возможно.