Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.01.29;
Скачать: CL | DM;

Вниз

[Pascal Error] E2250 There is no overloaded version of <function>   Найти похожие ветки 

 
Cobalt ©   (2011-10-19 11:27) [0]

[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-19 11:33) [1]

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


 
Cobalt ©   (2011-10-19 11:35) [2]

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


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

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


 
Anatoly Podgoretsky ©   (2011-10-19 12:57) [4]

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

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


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

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

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


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


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

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


 
jack128_   (2011-10-19 14:14) [7]

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


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

> [7] jack128_   (19.10.11 14:14)

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

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


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



Страницы: 1 вся ветка

Текущий архив: 2012.01.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
1-1283001637
alexjfx
2010-08-28 17:20
2012.01.29
многострочный listbox


2-1318595246
Handle
2011-10-14 16:27
2012.01.29
список процедур


2-1319112059
Hadroran
2011-10-20 16:00
2012.01.29
Мультиудаление записей таблицы


2-1318575654
Laguna
2011-10-14 11:00
2012.01.29
Добавление в БД и извлечение картинки JPG


2-1319009272
Cobalt
2011-10-19 11:27
2012.01.29
[Pascal Error] E2250 There is no overloaded version of <function>