我想问你在这种情况下为什么需要直接调用类运算符:
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[]
,这可能是您想要的行为。