簡體   English   中英

從boost :: shared_ptr轉換而來 <T> to boost :: shared_ptr <const T>

[英]convert from boost::shared_ptr<T> to boost::shared_ptr<const T>

class T
{};

class UseT
{
public:
    //...
    boost::shared_ptr<const T> getT() const
    {
        return m_t;
    }
private:
    boost::shared_ptr<T> m_t;
};

問題>當我們從boost::shared_ptr<T>轉換為boost::shared_ptr<const T>時使用的規則是什么?

shared_ptr<T>有一個轉換構造函數,允許它從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<T>創建shared_ptr<const T> shared_ptr<T>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM