[過去ログ] BOOSTを語れゴラァ (1001レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
435(3): 2005/05/11(水)18:47 AAS
教えてください。
以下のようなキャストで、"boost::static_pointer_cast<>"を書きたくないのですが方法はありますか。
ダウンキャストになりますが、仕様上、整合性は保たれているので、できればキャスト指定を省略したいのです。
class CMyClass
{
};
class CMyClass2 : public CMyClass
{
};
void cast_test()
{
boost::shared_ptr<CMyClass2> smMyClass2( new CMyClass2 );
boost::shared_ptr<CMyClass> smMyClass1 = smMyClass2;
boost::shared_ptr<CMyClass2> smMyClass3 = smMyClass1; // ここでコンパイルエラー
// できればこの長いキャストをしたくない
boost::shared_ptr<CMyClass2> smMyClass4 = boost::static_pointer_cast<CMyClass2,CMyClass>( smMyClass1 );
}
436(1): 2005/05/11(水)19:05 AAS
>>435
一つ言うと、型推論があるので
boost::static_pointer_cast<CMyClass2>(smMyClass1);
でいい。
でも多分C形式のキャストみたいなのを求めてるんだろうね。
441(1): 2005/05/12(木)00:44 AAS
>>435
「整合性は保たれている」という情報はコンパイラの知りえない情報なので、無理。
443: 435 2005/05/12(木)09:04 AAS
>>436
>>441
ありがとうございます。
>「整合性は保たれている」という情報はコンパイラの知りえない情報なので、無理。
operator=の記述などでなんとか回避できないかと思ったのです。
教えてもらった短いキャストでやろうと思います。
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.028s