Начиная с точки зрения идиомы «не следует использовать исходные указатели», я смотрел на умные указатели, чтобы найти, какой из них лучше всего подходит для отношений «обратный».Как выразить в Modern C++ ссылки на отношения без выражения собственности?
К относятся к отношениям, я имею в виду то же самое, как этот код:
class A
{
public:
A(B & b) :
m_refB(b)
{ }
private:
B & m_refB; // A refers to B
};
Но без всех недостатков использования ссылок (впоследствии не может быть переплетен, не может быть переназначен, А больше не может быть по умолчанию конструктивны и т.д).
Каждый умный указатель, однако, в своей собственной семантике выражает концепцию собственности. Они даже называются вокруг этой концепции собственности (уникальный указатель, когда собственность уникальна только для одного объекта, общий указатель, когда собственность делится между другими объектами и т. Д.).
Я хотел бы выразить, что A относится к B, но A не принадлежит B. Может ли std::reference_wrapper<B>
выполнить эту работу или это было бы неправильным использованием?
'станд :: weak_ptr' не принадлежит собственность – Danh
@Danh ли не' станд :: weak_ptr' применять требование использовать 'зЬй :: shared_ptr' для тот же ресурс? –
@JamesAdkison, это так, и поэтому я не защищаю его за это. См. Мой ответ. – SergeyA