![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Добрый день, объясните, почему компилятор требует чтобы я указал inherited; в конструкторе класса, если этот конструктор ни от чего не наследуется?
Код:
type
MyClass = class(TObject)
public
constructor Create;
end;
implementation
constructor MyClass.Create;
begin
inherited; // без него ругается!!!
end;А если добавить параметров в конструктор, то вообще придется прописывать inherited Create; Код:
type
MyClass = class(TObject)
public
constructor Create(MyName : string);
end;
implementation
constructor MyClass.Create(MyName : string);
begin
inherited Create; // Без него ругается!!!
end;Это баг или с чем это может быть связано, я совсем запутался(( |
|
#2
|
|||
|
|||
|
Да не, вроде все нормально:
Код:
type
TMyClass1 = class
constructor Create;
end;
TMyClass2 = class(TObject)
constructor Create;
end;
TMyClass3 = class(TObject)
constructor Create(AParam : Integer);
end;
constructor TMyClass1.Create;
begin
end;
constructor TMyClass2.Create;
begin
end;
constructor TMyClass3.Create(AParam: Integer);
begin
inherited Create;
end;Все компилится. С последним случаем понятно. Inherited без параметров вызывает родительский метод с той же сигнатурой, а у родителя нет Create(AParam). Соотв. надо указывать имя. А первые варианты - без проблем. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
kenshi245 (15.06.2017)
| ||
|
#3
|
|||
|
|||
|
Цитата:
Цитата:
|
|
#4
|
|||
|
|||
|
Интересно, это какая версия?
Ну и опции компилятора проверить... |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
kenshi245 (15.06.2017)
| ||