Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

[Pascal Error] E2250 There is no overloaded version of <function>


Cobalt ©   (2011-10-19 11:27:00) 

[Pascal Error] E2250 There is no overloaded version of <function> that can be called with these arguments

Есть две одноименные функции ( overloaded), с одинаковыми аргументами, возвращающие string и double
Хочу присвоить переменной типа Variant результат, возвращаемый функцией. Как указать, какую из используемых функций брать?
function MyFunc(S: string): string; overloaded;
function MyFunc(S: string): Double; overloaded;
...

var
 V: Variant;
begin
 V := MyFunc('param-pam-pam');


И. Павел   (2011-10-20 14:59:00) [1]

> [7] jack128_   (19.10.11 14:14)

Обычно перегружаемые функции имеет смысл перегружать как раз только для того, чтобы они вызывались по одному имени и после смены типа переменной-аргумента код менять бы не пришлось:

calc(inta)
calc(floatb)
calc(arrayc)


Если из-за разных аргументов придется менять область видимости - ИМХО, это уже не то.


jack128_   (2011-10-19 14:14:00) [2]

V := Unit1.MyFunc('dw');
V := Unit2.MyFunc('dw');


Плохиш   (2011-10-19 13:17:00) [3]


> Есть две одноименные функции (overloaded), с одинаковыми
> аргументами, возвращающие string и double

В языке Делфи такое не допускается.


И. Павел   (2011-10-19 13:03:00) [4]

> [0] Cobalt ©   (19.10.11 11:27)

Так делать нельзя. Перегруженные функции не могут иметь одинаковые сигнатуры. Возвращаемое значение может вообще не использоваться, что вызывать тогда?


Anatoly Podgoretsky   (2011-10-19 12:57:00) [5]

Странно, что не обругали еще на стадии объявления. Ведь тут явная неодназначность, какую функцию использовать.

И еще в какой версии Дельфи появилась директива overloaded?


Медвежонок Пятачок   (2011-10-19 11:37:00) [6]

function MyFunc(S: string): variant;
//function MyFunc(S: string): Double; overloaded;


Cobalt   (2011-10-19 11:35:00) [7]

Упс, ошибочка вышла, не туда посмотрел :-)


Медвежонок Пятачок   (2011-10-19 11:33:00) [8]

для начала не овелоадед, а оверлоад.
ну и потом перегруженные функции должны отличаться количеством параметров


Наверх

Титульная страница Поиск, карта сайта Написать письмо