3
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>ですか?

4

1 に答える 1

1

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<const T>shared_ptr<T>

于 2013-02-14T17:22:42.223 に答える