Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
soican
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
#1

Можно ли сделать шаблон?

23.08.2013, 23:05. Просмотров 493. Ответов 11
Метки нет (Все метки)

есть две функции A(){} и B(){}, использующие в себе третью C(){}. Эта третья содержит в себе
C++
1
if (a<b) {...}
вот в A нужно иметь a<b, а вот в B a<=b?
Вопрос : можно ли сделать С шаблоном и как?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2013, 23:05
Ответы с готовыми решениями:

Можно ли сделать шаблон функции только для определенных типов?
Например template&lt;typename T&gt; void func(T x){} Где T может быть только...

без знаковый double. Если ли чтоб можно было в шаблон пихать или самому сделать придется ?
сабжж

Сделать шаблон
Здравствуйте имееться вот такая задача: #include &lt;iostream&gt; #include...

Шаблоны функций. Можно ли задать шаблон мэйна
Понятно что нельзя. В этом чудном участке кода, в мэйн вводимые данные...

Можно ли объявить дружественную функцию как шаблон?
Так всё работает: template&lt;class T&gt; class random { /*всячина*/...

11
kamre
127 / 131 / 11
Регистрация: 25.12.2011
Сообщений: 443
23.08.2013, 23:21 #2
Цитата Сообщение от soican Посмотреть сообщение
можно ли сделать С шаблоном и как?
А зачем, если можно просто передавать флаг в функцию C?
0
soican
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:23  [ТС] #3
Цитата Сообщение от kamre Посмотреть сообщение
передавать флаг в функцию C
что за флаг? это как? типа bool какой нибудь, а в самой ф-ции if () { два варианта < или <=}?
0
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
23.08.2013, 23:23 #4
soican, причем тут вообще шаблоны?
0
Jupiter
Каратель
Эксперт С++
6569 / 3990 / 400
Регистрация: 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;
}
1
soican
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:30  [ТС] #6
Цитата Сообщение от Tulosba Посмотреть сообщение
причем тут вообще шаблоны?
ну при том, что вся ф-ция одинакова кроме знака < или <= вот и навевает мысли, чтобы не писать две одинаковые отличающие только знаками ф-ции а как нибудь по красоте раз и передал как нибудь, что вот здесь < а вот здесь <=
0
Tulosba
23.08.2013, 23:32
  #7

Не по теме:

Jupiter,

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

0
Jupiter
23.08.2013, 23:34
  #8

Не по теме:

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

0
soican
49 / 23 / 3
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:37  [ТС] #9
Jupiter, охохохо вот это жестьянка...подумаю подумаю
A(){} B(){} C(){} - ну это не конструкторы - просто ф-ции, это я так показал, чтоб не просто так были. если это понимается как конструкторы, сори - буду знать
0
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
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) ) ...
}
1
Jupiter
23.08.2013, 23:38
  #11

Не по теме:

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

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

Добавлено через 4 минуты
кароче сохраняю код Jupiter в папке "пособие по жести"
использую в программе идею Tulosba
0
23.08.2013, 23:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.08.2013, 23:47

Сделать свой шаблон вектора
надо сделать шаблон вектора,посмотрите то что сделал это правильно? и еще...

Можно ли сделать так чтобы к классу можно было бы одновременно обращаться как к массиву
подскажите можно ли сделать так чтобы к классу можно было бы одновременно...

Как правильно сделать шаблон класса complex
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using std::cout; using std::cin;...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru