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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
#1

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

23.08.2013, 23:05. Просмотров 473. Ответов 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
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Можно ли сделать шаблон? (C++):

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

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

Сделать шаблон - C++
Здравствуйте имееться вот такая задача: #include &lt;iostream&gt; #include &lt;windows.h&gt; using namespace std; class Node { public: ...

Можно ли объявить дружественную функцию как шаблон? - C++
Так всё работает: template&lt;class T&gt; class random { /*всячина*/ public: friend void function(random&lt;int&gt;&amp;); ...

Шаблоны функций. Можно ли задать шаблон мэйна - C++
Понятно что нельзя. В этом чудном участке кода, в мэйн вводимые данные кастятся к инту. Как это можно обойти?#include&lt;iostream&gt; using...

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

11
kamre
126 / 130 / 4
Регистрация: 25.12.2011
Сообщений: 443
23.08.2013, 23:21 #2
Цитата Сообщение от soican Посмотреть сообщение
можно ли сделать С шаблоном и как?
А зачем, если можно просто передавать флаг в функцию C?
0
soican
49 / 23 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:23  [ТС] #3
Цитата Сообщение от kamre Посмотреть сообщение
передавать флаг в функцию C
что за флаг? это как? типа bool какой нибудь, а в самой ф-ции if () { два варианта < или <=}?
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
23.08.2013, 23:23 #4
soican, причем тут вообще шаблоны?
0
Jupiter
Каратель
Эксперт С++
6558 / 3979 / 227
Регистрация: 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 / 1
Регистрация: 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 / 1
Регистрация: 16.11.2011
Сообщений: 329
Записей в блоге: 5
23.08.2013, 23:37  [ТС] #9
Jupiter, охохохо вот это жестьянка...подумаю подумаю
A(){} B(){} C(){} - ну это не конструкторы - просто ф-ции, это я так показал, чтоб не просто так были. если это понимается как конструкторы, сори - буду знать
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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 / 1
Регистрация: 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
Привет! Вот еще темы с ответами:

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

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

Пишем исключения для каждого типа данных, или можно использовать шаблон? - C++
Всем доброго дня. В классе &quot;очередь&quot; я использую шаблон класса и если пользователь захочет допустим ввести не тип int а тип double то мне...

Как сделать шаблон на считывание неизвестного типа данных? - C++
Есть размерности двумерного массива. Нужно считать с клавиатуры числа. Они могут быть как int, так и float или double. Как это сделать? ...


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

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

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