様々なクラスを含んだ配列をfor文で回している際などに今走査しているインスタンスが指定したクラスのインスタンスかどうかを調べたい時があります。
iOSで言うisKindOfClass、Javaで言うinstanceof的なやーつです。
c++では以下の様にやると実現出来ます。
for (auto instance : instances)
{
Sample *sample = dynamic_cast<Sample*>(instance);
if(sample)
{
// Sampleクラスのインスタンスである
}
else
{
// Sampleクラスのインスタンスでない
}
}
dynamic_castは数あるc++のcast命令のうちの一つでキャスト時にキャスト可能かどうかを判断し、可能ならキャストして返し、不可能ならnullptrを返します。
誰かのお役に立てば。
コメント