Я работаю с поисковой системой по высоким и низким параметрам и не могу найти решение, которое удалит предупреждение, даже если я использую директиву using
.«Использование» не разрешает предупреждение «скрывает виртуальную функцию»
class TShowException_Form : public TForm {
__published: // IDE-managed Components
TButton *Send_Button;
TButton *Cancel_Button;
TLabel *Message_Label;
private: // User declarations
using TCustomForm::ShowModal;
//using TForm::ShowModal;
public: // User declarations
__fastcall TShowException_Form(TComponent* Owner);
int __fastcall ShowModal(System::Sysutils::Exception *E);
};
Я хочу, чтобы скрыть оригинальный virtual int __fastcall ShowModal(void)
и выставить новый принимая параметр Exception.
Но это еще жалобы на «скрывает виртуальную функцию»:
[bcc32 Warning] TShowExceptionForm.h(32): '_fastcall TShowException_Form::ShowModal(Exception *)' hides virtual function '_fastcall TCustomForm::ShowModal()'
Я также попытался using TForm::ShowModal;
, но с тем же результатом. Любые идеи о том, как решить это предупреждение?
EDIT
я узнал, что он работает отлично, если я переопределить метод show()
вместо:
class TShowException_Form : public TForm {
__published: // IDE-managed Components
TButton *Send_Button;
TButton *Cancel_Button;
TLabel *Message_Label;
private: // User declarations
using TForm::ShowModal;
using TForm::Show;
public: // User declarations
__fastcall TShowException_Form(TComponent* Owner);
int __fastcall Show(System::Sysutils::Exception *E);
};
Так почему он не работает с ShowModal()
?
HIDEBASE сделал трюк. Да, я также привык к Quirks C++ Builder, но для меня это было новое ... –
Да, 'HIDESBASE' - правильный ответ, когда вы хотите ** скрыть и перегрузить ** базовый класс виртуальный метод, а не ** переопределить ** его. –