Решено: C++ шаблонные функции (вызов перегруженной функции неоднозначен о_О)

Модератор: Модераторы разделов

Аватара пользователя
--=Civil696=--
Сообщения: 227
ОС: Gentoo o_O

Решено: C++ шаблонные функции

Сообщение --=Civil696=-- »

что то я завис.

Код: Выделить всё

 #include <iostream>
 #include <string>
 #include <vector>

 using namespace std;

 template <typename type>
     type max (type a, type b) {
         return (a > b) ? a : b;
}

int main () {

    int a = 11, b = 24;
    double c = 3.1, d = 3.0;
    string e = "ня", f = "ам";

    cout << "a " << a << " b " << b << " max " << max(a, b) << endl;
    cout << "c " << c << " d " << d << " max " << max(c, d) << endl;
    cout << "e " << e << " f " << f << " max " << max(e, f) << endl;
    return 0;
}


ругается так:

Код: Выделить всё

navi ~ $ g++ tes.cpp
tes.cpp: In function ‘int main()’:
tes.cpp:18: ошибка: вызов перегруженной функции ‘max(int&, int&)’ неоднозначен
tes.cpp:8: замечание: претенденты: type max(type, type) [with type = int]
/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/include/g++-v4/bits/stl_algobase.h:206: замечание:              const _Tp& std::max(const _Tp&, const _Tp&) [with _Tp = int]
tes.cpp:19: ошибка: вызов перегруженной функции ‘max(double&, double&)’ неоднозначен
tes.cpp:8: замечание: претенденты: type max(type, type) [with type = double]
/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/include/g++-v4/bits/stl_algobase.h:206: замечание:              const _Tp& std::max(const _Tp&, const _Tp&) [with _Tp = double]
tes.cpp:20: ошибка: вызов перегруженной функции ‘max(std::string&, std::string&)’ неоднозначен
tes.cpp:8: замечание: претенденты: type max(type, type) [with type = std::basic_string<char, std::char_traits<char>, std::allocator<char> >]
/usr/lib/gcc/i486-pc-linux-gnu/4.1.2/include/g++-v4/bits/stl_algobase.h:206: замечание:              const _Tp& std::max(const _Tp&, const _Tp&) [with _Tp = std::string]


Посмотрел ответы к упражнениям, там практически тоже самое, только функция inline и Type вместо type :wacko:
Где я напортачил?
НЕ ПАНИКУЙ © ^_~
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Решено: C++ шаблонные функции

Сообщение watashiwa_daredeska »

В стандартной библиотеке уже есть функция max с аналогичной сигнатурой. Назовите свою функцию, например, mymax.

P.S. И отучайтесь инжектить целиком неймспейсы (using namespace).
Спасибо сказали:
Аватара пользователя
--=Civil696=--
Сообщения: 227
ОС: Gentoo o_O

Re: Решено: C++ шаблонные функции

Сообщение --=Civil696=-- »

watashiwa_daredeska писал(а):
12.02.2009 00:41
В стандартной библиотеке уже есть функция max с аналогичной сигнатурой. Назовите свою функцию, например, mymax.
Тьфу блин. Видимо спать пора. Про существование max я конечно не знал, но попробовать переименовать функцию мог бы и догадаться. :(
Спасибо :)
P.S. И отучайтесь инжектить целиком неймспейсы (using namespace).
Я знаю что это плохо, но писать std::cout, std::vector и т.д. при выполнении копеечных упражнений жутко лениво :blush:
НЕ ПАНИКУЙ © ^_~
Спасибо сказали:
Slimy
Сообщения: 1689
ОС: openSuSE 11.2 GM (GеMор едишн)

Re: Решено: C++ шаблонные функции

Сообщение Slimy »

watashiwa_daredeska писал(а):
12.02.2009 00:41
В стандартной библиотеке уже есть функция max с аналогичной сигнатурой. Назовите свою функцию, например, mymax.

P.S. И отучайтесь инжектить целиком неймспейсы (using namespace).


Откройте секрет что в этом плохого?
Если уже ничего не помогает - прочти инструкцию.
sysinstall - гадость :)
ASUS A6q00Vm Pentium-M 1.7 GHz, 2Gb RAM, 160Gb HDD,
GeForce Go 7300 64Mb video
Спасибо сказали:
Аватара пользователя
Alxn1
Сообщения: 402
Статус: Красноглазик со стажем
ОС: Mavericks

Re: Решено: C++ шаблонные функции

Сообщение Alxn1 »

А проблемы выше мало?
Спасибо сказали: