|
|
Регистрация | << Правила форума >> | 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)
|