для функцииназначения перегруженной функции для работы указателя в качестве значения по умолчанию
foo(int (*fnptr)(int));
Я хочу поставить значение по умолчанию для функции указателя int bar(int)
т.е. значения по умолчанию указателя является bar
bar
также перегружен как
double bar (double);
bool bar (bool);
как я могу присвоить значение ??
Я попытался
foo (int (*fnptr)(int) = bar);
, но он не работает.
EDIT Я использую MS Visual Studio и получаю код ошибки C2440
'аргумент по умолчанию': не удается преобразовать из 'перегруженной-функции' до 'Error_C (__cdecl *) (HMstd :: исключение)'
Моя текущая функция является членом класса я определен 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;
}
Какая ошибка вы получаете? Мне это хорошо. – Quentin
У меня нет проблем с компиляцией такого кода. Не могли бы вы предоставить [MCVE] (http://stackoverflow.com/help/mcve)? Какой компилятор/версия/платформа вы используете? – Holt
Yup. 'int bar (int); двойной бар (двойной); bool bar (bool); void foo (int (* fnptr) (int) = bar); int main() {} 'компилируется и работает для меня. –