2016-11-25 62 views
0

中声明的私有成员我想知道是否有办法解决以下问题,而无需更改访问类型ptrboost :: thread_specific_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

boost::thread_specific_ptr是不可复制的,因此不能由值被返回。要么返回一个(常数)参考构件PTR:

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

或者返回包含指针:

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