little_greg Опубликовано 14 октября, 2009 Жалоба Поделиться Опубликовано 14 октября, 2009 всем доброго времени суток, подскажите, пож, почему при вызове функции происходит ошибка, "...call of overloaded `swap(int&, int&)' is ambiguous", (что-то вроде: вызов перегруженной функции двусмысленный) #include <iostream>using namespace std;template <typename T>void swap(T& a, T& b);int main(){int i = 10;int j = 20;cout << "i, j = " << i << ", " << j << ".\n";cout << "using int swap:\n";swap(i, j);cout << "now i, j = " << i << ", " << j << ".\n";double x = 24.5;double y = 81.7;cout << "x, y = " << x << ", " << y << ".\n";cout << "using double swap:\n";swap(x, y);cout << "now x, y = " << x << ", " << y << ".\n";system("pause");return 0;}template <typename T>void swap(T& a, T& b){ T temp; temp = a; a = b; b = a;} Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Lion HC Опубликовано 14 октября, 2009 Жалоба Поделиться Опубликовано 14 октября, 2009 Для начала попробуйте: template <typename T>void swap(T& a, T& b){ T temp = a; a = b; b = temp;} Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
little_greg Опубликовано 14 октября, 2009 Автор Жалоба Поделиться Опубликовано 14 октября, 2009 не сработало... Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Тролль Опубликовано 14 октября, 2009 Жалоба Поделиться Опубликовано 14 октября, 2009 little_greg: Похоже, у тебя конфликт двух функций swap: определенной тобой и существовавшей раньше. Попробуй заменить имя функции swap на другое, скажем, swapm Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
little_greg Опубликовано 15 октября, 2009 Автор Жалоба Поделиться Опубликовано 15 октября, 2009 и правда, заработало, спасибо Цитата Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.