Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запретить инстанцирование класса / 7 сообщений из 7, страница 1 из 1
08.07.2019, 18:10
    #39835143
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить инстанцирование класса
Можно ли как-то запретить инстанцирование класса или, хотя бы, получить warning от компилятора?

Код: pascal
1.
2.
3.
4.
TMyClass = class abstract
end;

LObj := TMyClass.Create;


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

С уважением, Vasilisk
...
Рейтинг: 0 / 0
08.07.2019, 18:14
    #39835152
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить инстанцирование класса
Получилось так
Код: pascal
1.
2.
3.
4.
TMyClass = class abstract
strict protected
  procedure WarningAbstract; virtual; abstract;
end;
...
Рейтинг: 0 / 0
08.07.2019, 18:18
    #39835157
X-Cite
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить инстанцирование класса
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.
...
Рейтинг: 0 / 0
08.07.2019, 23:11
    #39835247
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить инстанцирование класса
_Vasilisk_,

Код: pascal
1.
2.
3.
4.
5.
type
   TMyClass = class
   public
      constructor Create(); virtual; abstract;
   end;
...
Рейтинг: 0 / 0
09.07.2019, 00:24
    #39835265
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить инстанцирование класса
или, если класс не 1-ый в иерархии, можно генерировать exception в конструкторе. А чтобы избавиться от него в дальнейшем, это может быть вызов абстрактной процедуры из конструктора (которая потом перегрузится в потомках) или просто виртуальной процедуры с банальным raise Exception
...
Рейтинг: 0 / 0
09.07.2019, 08:39
    #39835304
Гаджимурадов Рустам
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить инстанцирование класса
Кроик Семён> можно генерировать exception в конструкторе.

Он же на уровне компилятора хочет, а не в run-time ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
09.07.2019, 09:49
    #39835325
Кроик Семён
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запретить инстанцирование класса
Гаджимурадов РустамОн же на уровне компилятора хочет

Я только после этого комментария это заметил. Соррян.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Запретить инстанцирование класса / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]