在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)

09-27 13:12