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

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

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

Показать сообщение отдельно
skvor
640KB мне хватило на всё.
118 / 49 / 2
Регистрация: 07.06.2009
Сообщений: 442
27.09.2011, 12:52     Конфликт имени функции в шаблоне
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++ :р - - где эту фигню отключить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 17:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru