Форум программистов, компьютерный форум, киберфорум
Наши страницы

Конфликт имени функции в шаблоне - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как объявить строковую переменную? http://www.cyberforum.ru/cpp-beginners/thread357044.html
которой в процессе выполнения программы будут присваиваться разные значения. Вот это: char* a = "VasiaPupkin"компилятор объявляет устаревшим: warning: deprecated conversion from string constant to...
C++ Подсчитать в строке количество символов до точки с запятой и после нее. Всем доброго времени суток. Прощу прощения, снова нужна ваша помощь. Если кто может помочь буду благодарен. Строки 1. В заданной строке имеется одна точка с запятой ( ; ). Подсчитать... http://www.cyberforum.ru/cpp-beginners/thread357040.html
C++ Перегрузка оператора +=
Есть два класса: Vec4(вектор из 4х float) и Mat4(вектор из 4х Vec4). Проблема в том что при перегрузке в Mat4 операции += я получаю ошибку компиляции In member function 'Mat4&...
C++ условие
Ответ скорее всего прост,но не могу придумать никак #include <stdio.h> #include <conio.h> #include <locale.h> int fact(int n)//в цикле со счётчиком умножают переменную на счетчик, который...
C++ Расчитать значение функии f(x) по соответсвующей формуле. http://www.cyberforum.ru/cpp-beginners/thread357006.html
Добрый день, вот моё задание: Составьте алгоритм программы, которая принимает от пользователя значение x и в зависимости от его значения, расчитывет значение функии f(x) по соответсвующей формуле....
C++ Создание динамического массива const int Num=5; const int SIZE=4096 * Num; SHORT Buf; как такое заменить, если Num- инициализируется при загрузке программы, читается из файла. int Num; int SIZE=4096 * Num; SHORT* Buf... подробнее

Показать сообщение отдельно
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442

Конфликт имени функции в шаблоне - C++

27.09.2011, 12:52. Просмотров 517. Ответов 5
Метки (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
template <class x>
  x plus(const x &x1, const x &x2)
  { return x1+x2;
  }
 
int main(int argc, char *argv[], char *env[])
{ system("clear");
  int a=10,b=37;
  std::string s1="111",s2="222";
  std::cout<<plus(111,222)<<std::endl;
  std::cout<<plus(s1,s2)<<std::endl;
  std::cout<<s1+s2<<std::endl;
  std::cout<<plus(111.11,222.22)<<std::endl;
  std::cout<<plus(a,b)<<std::endl;
  std::cout<<plus(a,a)<<std::endl;
  return 0;
}
Если не использовать std::string (11 строка), то компилируется нормально, а если пытаться использовать plus() для строк, то компилятор пишет
/usr/include/c++/4.2/bits/stl_function.h: In function 'int main(int, char**, char**)':
/usr/include/c++/4.2/bits/stl_function.h:134: error: 'template<class _Tp> struct std:lus' is not a function,
test.cpp:30: error: conflict with 'template<class x> x plus(const x&, const x&)'
test.cpp:40: error: in call to 'plus'
если переименовать plus() в, допустим, plus33(), то всё снова компилируется.

Поясните по-русски, что такое
'template<class _Tp> struct std:lus' is not a function
я так понял, что в std уже использована "plus" (правда не знаю что это), но почему это конфликтует с std::string, ведь моя функция plus() описана вне std?

ЗЫ, смайлики конфликтуют с C++ :р - - где эту фигню отключить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru