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

Как сделать один шаблон для разных типов - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не работает код http://www.cyberforum.ru/cpp-beginners/thread632692.html
Помогите пожалуйста перепробовал уже все компиляторы ... не хочет запускаться данный код ( думал на visual C++ 6.0 все запустится но все безуспешно( #include <iostream.h> int main() { cout << "Hollo World!\n"; return 0; }
C++ rawurlencode() в С++ Привет всем! Надо срочно пару строк закодировать под C++, но никак не могу найти аналог функций rawurlencode() в С++. Может кто-нить знает алгоритм этой кодировки. Если кто-нить сталкивался с таким, подскажите пожалуйста! http://www.cyberforum.ru/cpp-beginners/thread632689.html
Динамическое изменение консольного окна, с избежанием появления полос прокрутки C++
Здравствуйте, коллеги. Я нуждаюсь в помощи и совете. #include <iostream> #include <windows.h> #include <conio.h> #include <locale> using namespace std; const int WIDTH = 59;
с++ версии выпусков где просмотреть C++
у меня такое дело - хотел с 2010 студии перейти на с++ 6.0 но она виснет странным образом. есть что то поновее чем с++ 6 но без установки дап нет.
C++ Симулятор собеседника? http://www.cyberforum.ru/cpp-beginners/thread632661.html
Ребята, привет. Хочу задать вопрос. Я хочу сделать программу, в которой пишешь например: 1 - программа отвечает 2. Допустим. Вопрос: Как это сделать?.
C++ error C2228: left of '.add' must have class/struct/union type. в чем ошибка? Помогите понять в чем ошибка. Пасиб. #include <iostream.h> class book { private: char name_book; char name_avtor; int number; подробнее

Показать сообщение отдельно
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
03.08.2012, 22:37     Как сделать один шаблон для разных типов
Ну определяете для классов метод с именем operator<символ оператора>. Для сравнения, например, так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int student::operator<(const student &other)
{
  int result;
  if (this->avg_mark == other.avg_mark) {
    result = 0;
  }
  else if (this->mark > other.avg_mark) {
    result = -1;
  }
  else {
    result = 1;
  }
  return result;
}
Всё, теперь мы можете сделать шаблонную функцию (или метод класса, не важно)
C++
1
2
3
4
5
6
7
template <class T>
void sort(std::vector<T> &vector)
{
  /* и в ней писать */
  if (vector[i] < vector[j]) {
  /* ... */
}
Для примитивных типов используется их встроенный operator<, для вашего student — определённый вами operator<.

В чём проблема? Не надо лепить каких-то отдельных специализаций для int с double отдельно, где использовать <, а для student отдельно, где использовать какой-нибудь compare. Определяйте operator< и пишите как обычно: a < b. Именно для этого и существует перегрузка операторов.

Пожалуйста, если этого будет недостаточно, оформите ваши мысли в виде кода, который вы бы хотели написать при реализации описанной функциональности. Типа: «Я хочу писать вот так: [...] и чтобы оно делало так-то и так-то. Это реально?»
 
Текущее время: 16:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru