我想问你在这种情况下为什么需要直接调用类运算符:

void __fastcall TForm2::statusDrawPanel(TStatusBar *StatusBar, TStatusPanel *Panel,
                                        const TRect &Rect)
{
  //if (Panel == StatusBar->Panels[1]) This doesn't work for me, compiler throws E2096 Illegal structure operation
    if (Panel == StatusBar->Panels->operator [](1)) // but this is working
    {
      int i  = 0;
    }
}

我正在使用Borland的C++ Builder XE2。我也想问你在什么情况下我需要直接给类运算符打电话。

最佳答案

Panels显然是一个指针,当您在指针上使用[]时,它会将其视为指向数组的指针,并尝试将偏移量添加到指针以在给定的偏移量处获得Panels对象,这不是您想要的。

您需要使用Panels->operator[](1)(*StatusBar->Panels)[1]解除对指针的引用,以访问该对象并在其上调用operator[],这可能是您想要的行为。

10-04 11:49