Форум программистов, компьютерный форум CyberForum.ru

Шаблонная функция - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Параллельное программирование http://www.cyberforum.ru/cpp-beginners/thread393435.html
У меня есть задание: Коллективные операции. Работа имитирует реальный поиск в параллельной базе данных. Некоторое множество записей (ключ, данные) распределено по машинам коллектива. Пользователь за головной машиной (№0) вводит некоторый ключ. Головная машина рсапространяет этот ключ в коллективе, после чего все машины ищут у себя записи с таким ключом. Все машины уведомляют головную о...
C++ Программа со считыванием и распознаванием некоторых символов.. Написать программу, которая считывает строку символов, которая считывает строку, содержащую только числа (с проверкой символов при вводе) и под¬счи¬тывает количество знаков “минус” в строке. http://www.cyberforum.ru/cpp-beginners/thread393426.html
Программа табулировани двух функций C++
s=1-x^2/2!+x^4/4!-K x n=10 y=cosx Программа табулировани двух функций S и Y в заданном диапазоне изменения аргумента x. здесь n-число слагаеммых S. на К можно не обращать внимание она указывает продолжение функции
Ошибка в программе проверки значения строки C++
Прошу помощи. Нужно исправить код, чтобы если пользователь вводил list, программа выводила da. #include <conio.h> #include <iostream.h> int main() { char str; cin>>str; if(str=="list")
C++ Размещение(получить всевозможные вырианты) http://www.cyberforum.ru/cpp-beginners/thread393413.html
есть массив mas из k элем. Находим кол-во размещений for(int i=0;i<k;i++)col*=mas; int** frame = new int*; for(int j=0;j<k;j++) frame = new int; как заполнить массив frame всевозможными вариантами... желательно бы вот такой вид, например mas = 323 frame =
C++ Найти количество отрицательных элементов столбца, у которого сумма четных элементов не больше 30. Найти количество отрицательных элементов столбца, у которого сумма четных элементов не больше 30. Добавлено через 1 час 7 минут помогите решить ............. подробнее

Показать сообщение отдельно
Сыроежка
Заблокирован
28.11.2011, 01:18     Шаблонная функция
Цитата Сообщение от xadjek Посмотреть сообщение
Учу c++, в книге приводится вот такой листинг примера работы шаблонной функции, однако он не компилится, выдает ошибку
Код
error C2668: swap: неоднозначный вызов перегруженной функции
вот сам листинг
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <conio.h>
using namespace std;
template<typename T>
void swap(T &a,T &b);
 
int main()
{cout<<"vvedi x i y-> ";
int x,y;
cin>>x>>y;
cout<<"x="<<x<<"y="<<y<<endl;
swap(x,y);
cout<<"x="<<x<<"y="<<y<<endl;
double q,w;
q=x/10;
w=y/10;
cout<<"q="<<x<<"w="<<y<<endl;
swap(q,w);
cout<<"q="<<x<<"w="<<y<<endl;
return 0;
}
template<typename T>
void swap(T &a,T &b)
{T temp;
temp=a;
a=b;
b=temp;
}
где ошибка?
Во-первых, компиляторы в своих сообщениях об ошибках обычно сообщают, какие именно функции конфликтуют. Поэтому надо 1) внимательно читать сообщения компилятора об ошибке; 2) приводить на форуме полный текст сообщения об ошибке.


Во-вторых, ошибка у вас заключается в директиве

C++
1
using namespace std;
Вы тем самым ввели в глобальное пространство имен все имена из стандартного пространства имен. А в стандартном пространстве имен существует функция swap. Так как компилятор теперь в глобальном пространстве имен находит две функции с одним и тем же именем и параметрами, одну - из пространства имен std::, другую - объявленную вами, то не знает, какую из них выбрать.

Как исправить ошибку? Нужно пользоваться квалифицированным именем функции. Вызывайте свою функцию указав перед ней префикс глобального пространства имен

C++
1
::swap( x, y );
Тогда конфликта имен у вас не будет.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru