3
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>

4

1 回答 1

1

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>.

于 2013-02-14T17:22:42.223 回答