当前位置:  开发笔记 > 编程语言 > 正文

如何在Modern C++中表达不依赖所有权的参与关系?

如何解决《如何在ModernC++中表达不依赖所有权的参与关系?》经验,为你挑选了1个好方法。

从"一个不应该使用原始指针"成语的角度出发,我正在寻找智能指针来找到哪一个最适合引用关系.

通过引用关系,我的意思与此代码相同:

class A
{
public:

    A(B & b) : 
        m_refB( b ) 
    {   }

private:

    B & m_refB;    // A refers to B
};

但是没有使用引用的所有缺点(以后不能绑定,不能重新分配,A不能再默认构造等).

然而,每个智能指针以其自己的语义表达所有权概念.它们甚至以这种所有权概念命名(当所有权仅对一个对象是唯一的时,唯一指针,当所有权在更多对象之间共享时共享指针等).

我想表达的是A指的是B,但是A不拥有B.可以std::reference_wrapper< B >做这个工作,或者那是错误的用法吗?



1> SergeyA..:

没有"不应该使用原始指针"这样的事情.它是"不应该使用拥有原始指针".使用引用成语的原始指针没有任何问题.智能指针对此只是一种矫枉过正.特别std::weak_ptr:)

推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有