boost::polymorphic_downcast

トップページ > 小道具 >

abstract

必要なヘッダ
<boost/cast.hpp>
出来ること
assert付きstatic_cast
リファレンス
en / jp

sample

サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0]

#include <boost/cast.hpp>

struct Base
{
	virtual ~Base(){}
};

struct Derived : public Base
{
	virtual ~Derived(){}
};

int main()
{
	using boost::polymorphic_downcast;

	Base* b = new Derived;

	...

	Derived* d = polymorphic_downcast<Derived*>( b );

	...

	delete b;
	return 0;
}

etc

ダウンキャストには dynamic_cast などを用いるのが普通ですが、 絶対に成功するとわかっているダウンキャストであれば、 static_cast を用いても問題はありません。そこで、 Debug時には dynamic_cast によって検証を行い、 リリース時には実行効率を重視するために static_cast するというキャストを考えることができます。それがこれ。

see also

presented by k.inaba (kiki .a.t. kmonos.net) under CC0