перегрузка функций
От: SP_ Украина  
Дата: 06.03.07 17:54
Оценка:
void f();
void f(int i =0);
.....
f() //(1)
......

в (1) получаем "ambiguous call to overloaded function".
Можно ли как нибудь подсказать компилятору, что надо выбирать f(), не меняя сигнатур функций?
Re: перегрузка функций
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 06.03.07 17:56
Оценка:
Здравствуйте, SP_, Вы писали:

SP_>Можно ли как нибудь подсказать компилятору, что надо выбирать f(), не меняя сигнатур функций?


f((void)0);

не прокатит?
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий
Re: перегрузка функций
От: 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]: перегрузка функций
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 06.03.07 18:02
Оценка:
Здравствуйте, SergH, Вы писали:

SH>А оно скомпилится???


Только что проверил — увы, нет.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий
Re: перегрузка функций
От: Юнусов Булат Россия  
Дата: 06.03.07 18:17
Оценка: 23 (3) :)
Здравствуйте, SP_, Вы писали:

    typedef void (*PF)();
    PF pf = f;
    pf();

    static_cast<void (*)()>(f)();
Re[2]: перегрузка функций
От: SergH Россия  
Дата: 06.03.07 18:28
Оценка: 3 (1)
Здравствуйте, Юнусов Булат, Вы писали:

ЮБ>
ЮБ>    typedef void (*PF)();
ЮБ>    PF pf = f;
ЮБ>    pf();

ЮБ>    static_cast<void (*)()>(f)();
ЮБ>


Жёстко!
Делай что должно, и будь что будет
Re: перегрузка функций
От: dsavichev  
Дата: 06.03.07 19:01
Оценка:
Здравствуйте, 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]: перегрузка функций
От: Greg Zubankov СССР  
Дата: 07.03.07 14:25
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>растолкуйте плис, а зачем pf() определяется ?

Это два разных варианта.

ЮБ>>
Вариант 1:
ЮБ>>    typedef void (*PF)();
ЮБ>>    PF pf = f;
ЮБ>>    pf();
Вариант 2:
ЮБ>>    static_cast<void (*)()>(f)();
ЮБ>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.