在Delphi中,我编写了以下代码来识别Graphic是TBitmap:
if aImage.Picture.Graphic is TBitmap then
...
在C ++ Builder中,我编写了以下代码:
if (dynamic_cast<Image1->Picture->Graphic>(TBitmap) != 0)
....
但它不起作用。 C ++ Builder如何在Delphi中完成相同的检查?
答案 0 :(得分:4)
您的代码应为
if (dynamic_cast<TBitmap*>(Image1->Picture->Graphic) != 0)
....
或
if (dynamic_cast<TBitmap*>(Image1->Picture->Graphic) != nullptr)
....
或
if (dynamic_cast<TBitmap*>(Image1->Picture->Graphic))
....
或
TBitmap* bitmap = dynamic_cast<TBitmap*>(Image1->Picture->Graphic);
if (bitmap)
{
....
// do stuff with bitmap
}
这些都是等价的,您可以根据自己的喜好选择。
此处记录了dynamic_cast
运算符:http://docwiki.embarcadero.com/RADStudio/en/Dynamic_cast_(C%2B%2B_Type_Cast_Operator)