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

можно ли сделать шаблон? - C++

Восстановить пароль Регистрация
 
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:05     можно ли сделать шаблон? #1
есть две функции A(){} и B(){}, использующие в себе третью C(){}. Эта третья содержит в себе
C++
1
if (a<b) {...}
вот в A нужно иметь a<b, а вот в B a<=b?
Вопрос : можно ли сделать С шаблоном и как?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 438
23.08.2013, 23:21     можно ли сделать шаблон? #2
Цитата Сообщение от soican Посмотреть сообщение
можно ли сделать С шаблоном и как?
А зачем, если можно просто передавать флаг в функцию C?
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:23  [ТС]     можно ли сделать шаблон? #3
Цитата Сообщение от kamre Посмотреть сообщение
передавать флаг в функцию C
что за флаг? это как? типа bool какой нибудь, а в самой ф-ции if () { два варианта < или <=}?
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.08.2013, 23:23     можно ли сделать шаблон? #4
soican, причем тут вообще шаблоны?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
23.08.2013, 23:26     можно ли сделать шаблон? #5
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream>
 
template<class T>
class my_traits;
 
class A
{
    friend class my_traits<A>;
private:
    int i;
public:
    A(int i) : i(i) {}
};
 
class B
{
    friend class my_traits<B>;
private:
    int i;
public:
    B(int i) : i(i) {}
};
 
template<>
class my_traits<A>
{
public:
    static bool compare(const A& a, const A& b)
    {
        return a.i < b.i;
    }
};
 
template<>
class my_traits<B>
{
public:
    static bool compare(const B& a, const B& b)
    {
        return a.i <= b.i;
    }
};
 
template<class T, class R = my_traits<T> >
class C
{
public:
    C()
    {
        T a(5), b(5);
        std::cout << std::boolalpha
                  << R::compare(a, b)
                  << std::endl;
    }
};
 
 
int main()
{
    C<A> a;
    C<B> b;
}
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:30  [ТС]     можно ли сделать шаблон? #6
Цитата Сообщение от Tulosba Посмотреть сообщение
причем тут вообще шаблоны?
ну при том, что вся ф-ция одинакова кроме знака < или <= вот и навевает мысли, чтобы не писать две одинаковые отличающие только знаками ф-ции а как нибудь по красоте раз и передал как нибудь, что вот здесь < а вот здесь <=
Tulosba
23.08.2013, 23:32
  #7

Не по теме:

Jupiter,

Цитата Сообщение от soican Посмотреть сообщение
две функции
не классы.

Jupiter
23.08.2013, 23:34
  #8

Не по теме:

Цитата Сообщение от Tulosba Посмотреть сообщение
не классы.
Цитата Сообщение от soican Посмотреть сообщение
A(){} B(){} C(){}
это вообще конструкторы

soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:37  [ТС]     можно ли сделать шаблон? #9
Jupiter, охохохо вот это жестьянка...подумаю подумаю
A(){} B(){} C(){} - ну это не конструкторы - просто ф-ции, это я так показал, чтоб не просто так были. если это понимается как конструкторы, сори - буду знать
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
23.08.2013, 23:37     можно ли сделать шаблон? #10
Цитата Сообщение от soican Посмотреть сообщение
ну при том, что вся ф-ция одинакова кроме знака
ну так и сделайте параметр, который будет задавать метод сравнения.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
bool less( int a, int b )
{
   return a<b;
}
bool lessEqual( int a, int b )
{
   return a<=b;
}
 
void C( int a, int b, bool (*comp)(int,int) )
{
    if( comp(a,b) ) ...
}
Jupiter
23.08.2013, 23:38
  #11

Не по теме:

Цитата Сообщение от soican Посмотреть сообщение
охохохо вот это жестьянка...подумаю подумаю
смотри шоб моск не вытек память не утекла

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2013, 23:47     можно ли сделать шаблон?
Еще ссылки по теме:

C++ Можно ли сделать так чтобы к классу можно было бы одновременно обращаться как к массиву
Пишем исключения для каждого типа данных, или можно использовать шаблон? C++
Как сделать шаблон на считывание неизвестного типа данных? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:47  [ТС]     можно ли сделать шаблон? #12
Tulosba, крутяк..ни когда не передовал в ф-ию. аргументом другую ф-цию...

Добавлено через 4 минуты
кароче сохраняю код Jupiter в папке "пособие по жести"
использую в программе идею Tulosba
Yandex
Объявления
23.08.2013, 23:47     можно ли сделать шаблон?
Ответ Создать тему
Опции темы

Текущее время: 08:15. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru