Пользовательские Слабые / Сильные Справочные Указатели - PullRequest
2 голосов
/ 14 марта 2011

Я создаю собственную реализацию отношения указателя слабой / сильной ссылки, и я запутался в конфигурации. Когда у меня есть класс, который содержит сильную ссылку, и я хочу установить сильный указатель на другой класс, который имеет слабую ссылку, я должен передать указатель указателя слабого_рефа?

Если кто-то может, пожалуйста, взглянуть на этот код и сообщить мне, что я его оценю, также, если вы заметите какие-либо другие проблемы, пожалуйста, дайте мне знать. Я поместил эти три файла в файлы кодовой панели, чтобы эта страница не стала громоздкой.

WeakReference.h: http://codepad.org/nNtRk4vO

StrongReference.h: http://codepad.org/MGi0fZ4J

Пожалуйста, не превращайте это в аргумент "use boost, use std, use tr1", я ищу помощь по этому коду, не использую что-то еще.

1 Ответ

1 голос
/ 14 марта 2011

Реализации, которые я видел, и над которыми я работал, которые используют понятия сильной и слабой ссылки, все используют два счета.Иногда один счет - количество слабых ссылок, а другой - количество сильных.В других случаях один из показателей представляет собой сумму сильных + слабых ссылок.Иногда есть другие схемы.Но я еще не видел реализацию с одним счетчиком, как, по-видимому, у вас.

Возможно, было бы полезно, если бы вы написали спецификацию точно для того, каким должно быть поведение для strong_ref и weak_ref.Я считаю, что сам процесс написания спецификации может помочь в отладке реализации.Это заставляет вас думать о входах, выходах, угловых случаях, недействительных случаях и т. Д.

...