1

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

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。我也想问一下,什么情况下需要直接调用类操作员。

4

1 回答 1

3

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

您需要取消引用指针,或者使用Panels->operator[](1)(*StatusBar->Panels)[1]获取对象并调用operator[]它,这可能是您想要的行为。

于 2012-11-04T22:39:16.560 回答