Как запретить вызов функции как процедуры?

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
Stargazer
новенький
Сообщения: 52
Зарегистрирован: 30.05.2005 09:46:32

Как запретить вызов функции как процедуры?

Сообщение Stargazer »

FPC 2.0.4

Есть исходник, из текста которого неясно, вызывается функция или процедура (конкретно - это модуль в исходниках FPC, называется AVL_TREE.PP).

Процедура и функция имеют одно имя, являются методами одного класса, в качестве формальных параметров получают класс или указатель:

Код: Выделить всё

  TAVLTree = class
...
    procedure Add(ANode: TAVLTreeNode);
    function Add(Data: Pointer): TAVLTreeNode;
...


Соответственно, можно вызвать функцию как процедуру, ничему не присваивая результат вычисления функции, и компилятор это проглотит :)
В результате исходник стал неоднозначным.

Можно ли запретить такую вольность?
Stargazer
новенький
Сообщения: 52
Зарегистрирован: 30.05.2005 09:46:32

Сообщение Stargazer »

Вопрос наполовину снят, тип Pointer и тип Class всё же разные вещи.
Вместо Class нельзя подставить Pointer.

P.S. Вместо Pointer можно подставить Class!
Ответить