От:
SP_
Дата: 06.03.07 17:54
Оценка:
void f();
void f(int i =0);
.....
f() //(1)
......
в (1) получаем "ambiguous call to overloaded function".
Можно ли как нибудь подсказать компилятору, что надо выбирать f(), не меняя сигнатур функций?
Здравствуйте, SP_, Вы писали:
SP_>Можно ли как нибудь подсказать компилятору, что надо выбирать f(), не меняя сигнатур функций?
f((void )0);
не прокатит?
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
От:
SergH
Дата: 06.03.07 17:56
Оценка:
Здравствуйте, SP_, Вы писали:
SP_>SP_>void f();
SP_>void f(int i =0);
SP_>.....
SP_>f() //(1)
SP_>......
SP_>
SP_>в (1) получаем "ambiguous call to overloaded function".
SP_>Можно ли как нибудь подсказать компилятору, что надо выбирать f(), не меняя сигнатур функций?
Насколько я знаю, нельзя.
Делай что должно, и будь что будет
Re[2]: перегрузка функций
От:
SergH
Дата: 06.03.07 17:57
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:
SDB>SDB>f((void )0);
SDB>
SDB>не прокатит?
А оно скомпилится???
Делай что должно, и будь что будет
Re[3]: перегрузка функций
Здравствуйте, SergH, Вы писали:
SH>А оно скомпилится???
Только что проверил — увы, нет.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
Здравствуйте, SP_, Вы писали:
typedef void (*PF)();
PF pf = f;
pf();
static_cast <void (*)()>(f)();
Re[2]: перегрузка функций
Здравствуйте, Юнусов Булат, Вы писали:
ЮБ>ЮБ> typedef void (*PF)();
ЮБ> PF pf = f;
ЮБ> pf();
ЮБ> static_cast <void (*)()>(f)();
ЮБ>
Жёстко!
Делай что должно, и будь что будет
Здравствуйте, SP_, Вы писали:
SP_>Можно ли как нибудь подсказать компилятору, что надо выбирать f(), не меняя сигнатур функций?
Никак нельзя. Потому что двусмысленный вызов вышел. Можно вот так:
SP_>void f();
SP_>void f(int i); //убрал значение по дефолту...
SP_>.....
SP_>f() //(1)
SP_>......... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Как-то так.
Re[2]: перегрузка функций
От:
Аноним
Дата: 07.03.07 13:57
Оценка:
Здравствуйте, Юнусов Булат, Вы писали:
ЮБ>Здравствуйте, SP_, Вы писали:
ЮБ>ЮБ> typedef void (*PF)();
ЮБ> PF pf = f;
ЮБ> pf();
ЮБ> static_cast <void (*)()>(f)();
ЮБ>
растолкуйте плис, а зачем pf() определяется ?
Re[3]: перегрузка функций
Здравствуйте, <Аноним>, Вы писали:
А>растолкуйте плис, а зачем pf() определяется ?
Это два разных варианта.
ЮБ>>Вариант 1:
ЮБ>> typedef void (*PF)();
ЮБ>> PF pf = f;
ЮБ>> pf();
Вариант 2:
ЮБ>> static_cast <void (*)()>(f)();
ЮБ>>
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить