スマートポインタのキャスト
boost::shared_ptrのキャストについてのメモ書きです。
■アップキャスト
これは暗黙の型変換で行えます。
class A {}; class B : public A {};
boost::shared_ptr<a> a(new A()); boost::shared_ptr<b> b; b = a;
■static_cast
shared_ptrをstatic_castを使って変換できないため、代わりにstatic_pointer_castを使います。
boost::shared_ptr<int> a(new int(1)); boost::shared_ptr<double> b(new double(2.0)); a = boost::static_pointer_cast<int>(b);
■dynamic_cast
これらもstatic_castと使い方はほぼ同様です。
dynamic_castの場合はdynamic_pointer_castを使います。
サンプルソースはstatic_castと変わらないため割愛させていただきます。
COMMENTS & TRACKBACKS
- Comments ( 1 )
- Trackbacks ( 0 )
アップキャストの例は、以下のようになりませんか ?
shared_ptr b{ new B{ } };
shared_ptr a;
a = b;