У меня есть две функции с подписями, как показано ниже.
void overloading(int, int)
а также
void overloading(int, A *ptr, int)
где А класс.
Когда я компилирую в gcc 3.4. Моя основная функция имеет следующий вызов.
A *pointer = new A();
overloading(10, pointer,20);
Я получаю ошибку, которая говорит
"Invalid conversion from A * to int"
Я делаю что-то неправильно или компилятор не может определить правильную перегруженную функцию?
Ваша проблема в том, что в месте, где вы можете позвонить overloading
Вы не объявили трехпараметрическую версию функции, поэтому компилятор видит только (int, int)
версия. Вы даже можете доказать это, предварительно обработав исходный файл (например, g++ -E
).
Просто убедитесь, что все основные заголовки включены в ваш основной файл.
Других решений пока нет …