Проблемы с указателем при перегрузке в C ++?
-
22-07-2019 - |
Вопрос
Указатели представляют некоторые особые проблемы для разрешения перегрузки.
Скажем, например,
void f(int* x) { ... }
void f(char* x) { ...}
int main()
{
f(0);
}
Что не так с вызовом f (0)? Как я могу исправить вызов функции для f (0)?
Решение
f ((int *) 0)
или f ((char *) 0)
Но если вы обнаружите, что делаете это, я бы еще раз взглянул на ваш дизайн.
Другие советы
Примените его или не используйте вовсе:
f((int*)0);
Что неправильно с вызовом f (0), так это то, что разрешение неоднозначно. Обе ваши перегруженные функции имеют указатель, который в этом случае может быть разрешен только с помощью приведения.
f((int*)0)
В зависимости от того, что вы пытаетесь сделать, есть и другие варианты, которые не являются двусмысленными.
Не связан с StackOverflow