class T
{};
class UseT
{
public:
//...
boost::shared_ptr<const T> getT() const
{
return m_t;
}
private:
boost::shared_ptr<T> m_t;
};
问题> 转换 from 时使用的规则是boost::shared_ptr<T>
什么boost::shared_ptr<const T>
?
shared_ptr<T>
有一个转换构造函数,如果从 to 转换为有效,则可以构造它shared_ptr<U>
,反映内置指针的工作方式。U*
T*
template<typename U>
shared_ptr(const shared_ptr<U>& other);
(对于std::shared_ptr
构造函数只能在U*
可转换为时调用T*
,但boost::shared_ptr
我不确定它是否会检查它,或者你只是得到一个无效转换的编译器错误。)
由于T*
可以转换为const T*
,构造函数允许您shared_ptr<const T>
从shared_ptr<T>
.