Термин «дескриптор» - это широкий термин, который, по сути, означает идентификатор объекта .
Указатель или умный указатель подпадают под это определение, поэтому вам нужно выбратьболее краткий термин для вашего Варианта 2.
"Handle"
|
/------+-------\
/ | \
/ | \
Pointer Reference Other Identififer
| | \
|----+----| `T&` \
| | |---+------|
`T*` `shared_ptr<T>` Text Number (e.g. HWND in WinAPI)
Если я предполагаю, что вы имеете в виду некоторый фиксированный абстрагированный от памяти "другой идентификатор", тогда, конечно, вы можете использовать это.У вас не обязательно есть либо / или сценарий здесь.Вы, вероятно, хотите использовать умные указатели в любом случае (для управления жизненным циклом, если ничего больше), а умным указателям не нужно , чтобы быть в связанном списке.
может иметь std::map<your_identifier_type, std::shared_ptr<T> >
для сопоставления вашего фиксированного пользовательского идентификатора с [потенциально изменяющимся] умным указателем.
Отказ от ответственности: Эта диаграмма была спешно нарисованаи представляет мое видение дерева терминологии в его нынешнем виде, через полчаса после вставания с постели.Могут быть незначительные расхождения с другими взглядами, но это должно дать достаточно надежное представление о вещах.