Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
ВнизООП - вызов родительской функции Найти похожие ветки
← →
baataars (2004-01-13 17:11) [0]вопрос по ООП.
есть значится у родительского объекта функция называется CheckData, с ; virtual;
в конкретном потомке делаю этой функции override.
так вот - хочется в потомке сделать
function TNewObj.CheckData():Boolean;
begin
if(inherited=False)then
CheckData=False
else
CheckData=ПроверкаЛокальныхДанных;
end;
, т.е. сначала вызвать родительскую функцию и проверить что нет ошибок в общих данных, потом проверить уже от потомка.
← →
Тимохов (2004-01-13 17:13) [1]И где тут вопрос?
Пиши if(inherited checkdata() =False)then
CheckData=False
← →
alex_*** (2004-01-13 17:15) [2]overload; Только это будет уже не виртуальный метод
← →
alex_*** (2004-01-13 17:17) [3]>есть значится у родительского объекта функция называется CheckData, с ;
- если подразумевалось что возвращается Boolean, то [2] снимается.
← →
Verg (2004-01-13 17:55) [4]
> function TNewObj.CheckData():Boolean;
> begin
> if(inherited=False)then
> CheckData=False
> else
> CheckData=ПроверкаЛокальныхДанных;
> end;
Ну да,
result := inherited CheckData() and ПроверкаЛокальныхДанных;
← →
Serginio666 (2004-01-13 18:10) [5]Попробуй Через
TBoolFunc=Function:Boolean of object;
Meth:TMethod;
Meth.Code=@TParentObj.CheckData;
Meth.Data=Self;
TBoolFunc(Meth)();
← →
baataars (2004-01-13 18:11) [6]спасибо
if(inherited checkdata() =False)then
помогло.
← →
Тимохов (2004-01-13 18:12) [7]Граждне вы о чем?
У человека всего лишь и было, что для функций нельзя просто писать inherited, надо inherited FuncName.
← →
Александр (2004-01-16 13:11) [8]А зачем if?
Result := inherited CheckData() and {твое условие};
← →
Ega23 (2004-01-16 13:24) [9]Кстати, для общего развития вопрос: а могу ли я зи перегруженного метода потомка вызвать не такой же метод предка, а другой?
← →
Внук (2004-01-16 13:44) [10]Лично я не возражаю
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.01.29;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.008 c