Программа не определяет тип данных

Создал перегруженную функцию с типами данных char, long, double.Visual Studio не может определить разницу между char и long и подчеркивает их,как исправить это?

#include <iostream>
using namespace std;
char avg(char* x, char* y) {
    return (*x * *y) / 2;
}
double avg(double x, double y) {
    return (x * y) / 2;
}
long avg(long x, long y) {
    return (x * y) / 2;
}
int main()
{
    cout << avg(7,6) << endl; // тут лонг
    cout << avg(2.0, 10.0) << endl;
    cout<<avg(2,3)<<endl;
}   

Ответы (1 шт):

Автор решения: EOF

В вызовах avg(7, 6) и avg(2, 3) Вы передаете аргументы типа int, которые могут быть преобразованы и в long и в double. Компилятор не может определиться и генерирует ошибку. Передавайте аргументы типа long просто добавив суффикс L:

cout << avg(7L ,6L) << endl;
cout << avg(2.0, 10.0) << endl;
cout << avg(2L, 3L) << endl;

Вы говорите, что не может определить разницу между char и long. У Вас нет ни одной функции, которая принимает аргументы типа char. Есть функция, которая принимает указатели на char, но в коде такая нигде не вызывается.

→ Ссылка