для функции
foo( int (*fnptr)(int) );
Я хочу установить значение по умолчанию для указателя функции int bar(int)
т.е. значение указателя по умолчанию bar
bar
также перегружен как
double bar (double);
bool bar (bool);
как я могу присвоить значение ??
Я пытался
foo ( int (*fnptr)(int) = bar);
но это не работает.
ИЗМЕНИТЬ Я использую MS Visual Studio и получаю код ошибки C2440.
'аргумент по умолчанию': невозможно преобразовать из 'перегруженной функции' в 'Error_C (__cdecl *)(HMstd::exception)'
Моя фактическая функция является функцией-членом класса, который я определил exception
пространства имен HMstd
virtual Error_C execute_protocol(Error_C(*execute)(exception ex) = HMstd::MErr);
И функция
Error_C MErr(Error_C code);
Error_C MErr(char* desc);
Error_C MErr(exception ex);
где Error_C
- другой класс
Это определение трех перегруженных функций HMstd::MErr
.
Error_C HMstd::MErr(Error_C code)
{
std::cout << "\n\nError: An Error Of Code " << int(code) << " Occured....\n\n";
return SUCCESS;
}
Error_C HMstd::MErr(char* desc)
{
if (desc == NULLPTR)
return E_NULLPTR;
std::cout << desc;
return SUCCESS;
}
Error_C HMstd::MErr(exception ex)
{
bool Nullar = TRUE;
bool uninit;
for (int i = 0;i < 200;i++)
if (ex.description[i] != '\0')
Nullar = FALSE;
uninit = (int(ex.code) == -201) && Nullar;
if (uninit)
{
return UNINIT_PARAMETER;
}
MErr(ex.code);
MErr(ex.description);
return SUCCESS;
}
int bar(int); double bar (double); bool bar (bool); void foo( int (*fnptr)(int)=bar); int main() {}
компилируется и запускается для меня. - person Martin Bonner supports Monica   schedule 05.12.2016foo
. - person Martin Bonner supports Monica   schedule 05.12.2016