我不确定我是否因文档错误或头痛而遭受更多痛苦,所以...
我想要做的是创建一个 shared_ptr 与另一个共享所有权,但它引用对象的成员而不是整个对象。简单的例子,起点...
struct s
{
int a, b;
};
shared_ptr<s> s1 (new s); // pointing to whole object
从en.cppreference.com, shared_ptr 的构造函数(8)是......
template< class Y >
shared_ptr( const shared_ptr<Y>& r, T *ptr );
描述中提到“构造一个与 r 共享所有权信息的 shared_ptr,但拥有一个不相关且非托管的指针 ptr ...例如在 ptr 是 r 管理的对象的成员的典型用例中”。
所以...T
只是不小心从该构造函数中的模板中遗漏了,还是我遗漏了什么?事实上,Y 对我来说似乎也是错误的,所以一般来说,构造函数的描述是否正确?
我希望我能做的是这样的事情......
shared_ptr<int> s2 (s1, &(s1.get ()->a));
s2
指向成员a
(an int
),但与 共享整个对象的所有权s1
。
那是理智的吗?