boost :: thread_specific_ptr无法访问类中声明的私有成员

时间:2016-11-25 11:21:45

标签: c++ boost

我想知道是否有办法在不更改 ptr 访问类型的情况下解决以下问题。

class A
{
private:
    static boost::thread_specific_ptr< B> ptr;
public:
    boost::thread_specific_ptr< B> get() { return poolmanager_boost; }
};

错误:

boost::thread_specific_ptr<B>::thread_specific_ptr': cannot access private member declared in class 'boost::thread_specific_ptr<B>'

1 个答案:

答案 0 :(得分:1)

boost::thread_specific_ptr是不可复制的,因此无法按值返回。将(const)引用返回给成员ptr:

const boost::thread_specific_ptr< B> & get() const { return ptr; }

或者返回包含的指针:

B * get() const { return ptr.get(); }