小编Joh*_*com的帖子

这是在C++ 11中实现pimpl wth unique_ptr和move-semantics的正确方法

我还没有看到一个同时使用unique_ptr和move-semantics的pimpl示例.

我想将一个CHelper类添加到STL派生容器中,并使用pimpl来隐藏CHelper所做的事情.

这看起来不错吗?

Derived.h

class CDerived : public set<CSomeSharedPtr>, public CHelper  
{
//...
};
Run Code Online (Sandbox Code Playgroud)

`

Helper.h

// derived containers need to support both copy and move, so CHelper does too  

class CHelper  
{  
private:  
    class impl;  
    unique_ptr<impl> pimpl;  

public:  
//--- default: need both cotr & cotr (complete class) in order to use unique_ptr<impl>  
    CHelper();  
    ~CHelper();  

//--- copy  
    CHelper(const CHelper &src);         //copy constructor  
    CHelper& operator=(const CHelper &src);//assignment operator  

//--- move  
    CHelper(CHelper &&src);         //move constructor  
    CHelper& operator=(CHelper &&src);//move operator  

//--- expose public …
Run Code Online (Sandbox Code Playgroud)

c++ unique-ptr c++11

9
推荐指数
1
解决办法
4475
查看次数

标签 统计

c++ ×1

c++11 ×1

unique-ptr ×1