在Delphi中,我编写了以下代码来标识Graphic是TBitmap:
if aImage.Picture.Graphic is TBitmap then
...
在C ++ Builder中,我编写了以下代码:
if (dynamic_cast<Image1->Picture->Graphic>(TBitmap) != 0)
....
但这是行不通的。 C ++ Builder如何在Delphi中进行相同的检查?
最佳答案
您的代码应为
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)