![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
[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]для начала не овелоадед, а оверлоад.
ну и потом перегруженные функции должны отличаться количеством параметров