Если я пытаюсь определить указатель на перегруженную функцию
void myprint(int );
void myprint(const char* );
void (*funpointer)(int) = myprint;
компилятор понимает, что funpointer
должен указывать на версию myprint
, которая соответствует его аргументам. Вместо этого я хочу, чтобы funpointer
также был перегружен.
Я попытался просто добавить пару строк, как
void myprint(int );
void myprint(const char* );
void (*funpointer)(int);
void (*funpointer)(const char *);
void funpointer = myprint;
но затем компилятор жалуется на конфликтующие объявления для funpointer
(очевидно).
Есть ли способ достичь того, что я ищу? Я хотел бы, чтобы указатель вел себя как перегруженная функция. Таким образом, я мог бы назвать его как funpointer(1)
или funpointer("Hey.")
, и он работал бы как соответствующая версия myprint
.