こんなコードばっかりあるわけですよ。
int Foo( SomeClass *Src_ ){
int value;
if( Src_ != NULL ){
value = Src_->Value;
}else{
value = -1;
}
return value;
}
Src_ が NULL かどうかはチェックできてるけど、妙な値だったりするとアウトですよね。
そこでこんな風に書いてみた。
int Foo( SomeClass *Src_ ){
int value;
SomeClass *src = dynamic_cast<SomeClass *>( Src_ );
if( src != NULL ){
value = src->Value;
}else{
value = -1;
}
return value;
}
こうすると、もうちょっとましなチェックができることになるのかな?
#もちろん RTTI 有効でコンパイルっての前提です。