Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Запретить инстанцирование класса  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11193
Можно ли как-то запретить инстанцирование класса или, хотя бы, получить warning от компилятора?

TMyClass = class abstract
end;

LObj := TMyClass.Create;

никаких предупреждений не выдает

С уважением, Vasilisk
8 июл 19, 18:10    [21922975]     Ответить | Цитировать Сообщить модератору
 Re: Запретить инстанцирование класса  [new]
_Vasilisk_
Member

Откуда: Украина, Харьков
Сообщений: 11193
Получилось так
TMyClass = class abstract
strict protected
  procedure WarningAbstract; virtual; abstract;
end;
8 июл 19, 18:14    [21922985]     Ответить | Цитировать Сообщить модератору
 Re: Запретить инстанцирование класса  [new]
X-Cite
Member

Откуда: Минск
Сообщений: 1579
http://docwiki.embarcadero.com/RADStudio/Rio/en/Classes_and_Objects_(Delphi)

Note: Delphi allows instantiating a class declared abstract, for backward compatibility, but this feature should not be used anymore.
8 июл 19, 18:18    [21922990]     Ответить | Цитировать Сообщить модератору
 Re: Запретить инстанцирование класса  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6529
_Vasilisk_,

type
   TMyClass = class
   public
      constructor Create(); virtual; abstract;
   end;
8 июл 19, 23:11    [21923120]     Ответить | Цитировать Сообщить модератору
 Re: Запретить инстанцирование класса  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6529
или, если класс не 1-ый в иерархии, можно генерировать exception в конструкторе. А чтобы избавиться от него в дальнейшем, это может быть вызов абстрактной процедуры из конструктора (которая потом перегрузится в потомках) или просто виртуальной процедуры с банальным raise Exception
9 июл 19, 00:24    [21923140]     Ответить | Цитировать Сообщить модератору
 Re: Запретить инстанцирование класса  [new]
Гаджимурадов Рустам
Member

Откуда:
Сообщений: 60245
Кроик Семён> можно генерировать exception в конструкторе.

Он же на уровне компилятора хочет, а не в run-time ?

Posted via ActualForum NNTP Server 1.5

9 июл 19, 08:39    [21923194]     Ответить | Цитировать Сообщить модератору
 Re: Запретить инстанцирование класса  [new]
Кроик Семён
Member

Откуда: СПб --> Dortmund
Сообщений: 6529
Гаджимурадов Рустам
Он же на уровне компилятора хочет


Я только после этого комментария это заметил. Соррян.
9 июл 19, 09:49    [21923225]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить