Главная страница
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.007 c
2-1318866159
Gu
2011-10-17 19:42
2012.01.29
Установка VersionInfo


2-1318580783
igorium
2011-10-14 12:26
2012.01.29
Как сделать кроп картинки как в Фотошопе?


15-1318309652
И. Павел
2011-10-11 09:07
2012.01.29
Good bye sweet VCL


1-1282631144
Avil
2010-08-24 10:25
2012.01.29
Разница кодировок при копировании и вставке


1-1282292479
TComponent
2010-08-20 12:21
2012.01.29
Компонент для сетевой структуры