Запрет вызова конструктора родителя

_Vasilisk_
Дата: 27.08.2019 20:28:51
Есть такой код
type
  TClass1 = class
  public
    constructor Create; overload;
    constructor Create(AVal: Integer); overload;
  end;

  TClass2 = class(TClass1)
  public
    constructor Create(const AStr: string); overload;
    constructor Create(const AStr: string; AVal: Integer); overload;
  end;

procedure TForm1.Button1Click(Sender: TObject);
var
  LObj: TClass1;
begin
  LObj := TClass2.Create(10);
end;

Можно ли как-то на выделенной строке получить ошибку компиляции? Т.к. у TClass2 нет перегруженного конструктора принимающего один Integer.

Или какие еще есть способы передать в конструкторы потомка еще один параметр?

С уважением, Vasilisk
ziv-2014
Дата: 27.08.2019 20:57:15
_Vasilisk_,
Пробуй виртуальные конструкторы.
_Vasilisk_
Дата: 28.08.2019 12:58:54
ziv-2014
Пробуй виртуальные конструкторы.
Мне же нужно изменять количество параметров
Dimitry Sibiryakov
Дата: 28.08.2019 13:05:42

_Vasilisk_
Можно ли как-то на выделенной строке получить ошибку компиляции?

Задвинь этот конструктор в protected.

Posted via ActualForum NNTP Server 1.5

_Vasilisk_
Дата: 28.08.2019 13:09:40
Dimitry Sibiryakov
Задвинь этот конструктор в protected.
Думал об этом. Но базовый класс тоже нужно инстанцировать
Dimitry Sibiryakov
Дата: 28.08.2019 13:15:25

_Vasilisk_
Но базовый класс тоже нужно инстанцировать

Не нужно. Сделай у него ещё одного потомка с опубликованным конструктором.

Posted via ActualForum NNTP Server 1.5

_Vasilisk_
Дата: 28.08.2019 13:29:36
Dimitry Sibiryakov
Сделай у него ещё одного потомка с опубликованным конструктором.
Вариант. Спасибо
DimaBr
Дата: 28.08.2019 13:54:29
Dimitry Sibiryakov
Задвинь этот конструктор в protected.

Понижение видимости ?
Dimitry Sibiryakov
Дата: 28.08.2019 13:59:00

DimaBr
Понижение видимости ?

Нет. Он же overload, а не override.

Posted via ActualForum NNTP Server 1.5