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

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

Войти
Регистрация
Восстановить пароль
 
 
sodaily
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 121
#1

Шаблонный класс для работы с разными типами данных и объявление методов в main - C++

07.06.2016, 01:05. Просмотров 461. Ответов 20
Метки нет (Все метки)

есть класс шаблонный, но не могу объявить методы в main и сделать длядругих типов когда делала через шаблонные функции, то программа работает только с int,как сделать для других не понимаю читала про шаблоны, только как это реализовать не хватает знаний
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
63
64
65
#include "conio.h" 
#include "stdafx.h"
#include "conio.h" 
 
#include <iostream>
#include <iostream>
 using namespace std;
template <typename T>
class M
{ public
template <typename T>
void Sort( T* A, int n )//сортировка по возрастанию пузырек
{
    for( int k( 1 ); k <= n; k++ )
    {
        for( int i = 0; i < n - k; i++ )
        {
            if( A[ i ] > A[ i + 1 ] )
                swap( A[ i ], A[ i + 1 ] );//Функция swap меняет местами значения текущего эл и соседнего
        }
    }
}
 
template <typename T>
void Obr( T *A, int n )
 
{
    for( int j = 0; j < n; j++ )
    {
        for( int i = 0; i < n - 1; i++ )
        {
            if( A[ i ] > A[ i + 1 ] )
                swap( A[ i ], A[ i + 1 ] ); //Функция swap меняет местами значения
        }
    }
}
};
 
int main()
{
    setlocale( LC_ALL, "Russian" );
    int *A;
    int n;
    cout << "Введите размерность массива: ";
    cin >> n;
    A = new int[ n ];
    for( int i( 0 ); i < n; i++ )
    {
        cout << "Введите " << i + 1 << " - элемент: ";
        cin >> A[ i ];
    }
    
    ASort( A, n );
    cout << "Отсортированный массив: ";
    for( int i( 0 ); i < n; i++ )
    {
        cout << A[ i ] << " ";
    }
    Obr( A, n );
    cout << "обратный порядок: ";
    for( int j = n - 1; j >= 0; j-- )
        cout << A[ j ] << " "; // Выводим массив в обратном порядке ( с 9 до 0 включительно ) 
    _getch();
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.06.2016, 01:05     Шаблонный класс для работы с разными типами данных и объявление методов в main
Посмотрите здесь:

Написать шаблонный класс List для работы с одноправленными списками в динамической памяти - C++
Для объектов класса List определить операции проверки списка на пустоту, добавления элемента в начало списка, в конец списка, подсчет...

Реализация Fifo с разными типами данных - C++
Доброго времени суток! Задача следующая: Есть абстрактный класс CData, от него наследуются классы CByte, CWord, CNumber. Нужно...

Матрица с разными типами данных в ней - C++
Мне нужно создать матрицу, которая содержала бы разные типы данных, содержащиеся, в ней. По сути обыкновенная таблица, только в виде...

Переписать программу с разными типами данных - C++
Тема: Использование указателей для работы со сложными типами данных Вот я хочу чтобы мне помогли переписать эту программу чтобы она...

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

Сделать статический массив с разными типами данных - C++
Задача такова, есть ровно 60 магазинов. У каждого магазина по 6 параметров: 1) Адрес типа char 2) Заработок за сутки типа int 3)...

Список с разными типами данных, унаследованным от одного - C++
Доброго времени суток! У меня имеются унаследованные классы от одного , так же имеется vector&lt;общий_тип*&gt; arr. В программе создаются в...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sodaily
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 121
07.06.2016, 02:33  [ТС]     Шаблонный класс для работы с разными типами данных и объявление методов в main #16
tapochka, я уже наверное надоела вам, но если я дополняю код вещественным типом
C++
1
2
int *A;
    float *A;
то дальше A=new float [n] не видит что А это float
tapochka
40 / 40 / 8
Регистрация: 25.04.2014
Сообщений: 499
07.06.2016, 02:45     Шаблонный класс для работы с разными типами данных и объявление методов в main #17
Цитата Сообщение от sodaily Посмотреть сообщение
но если я дополняю код вещественным типом
нельзя так создавать, тип один раз на момент компиляции создается только, либо int либо float
вы конечно жжете
sodaily
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 121
07.06.2016, 17:43  [ТС]     Шаблонный класс для работы с разными типами данных и объявление методов в main #18
tapochka, и в чем тогда смысл шаблона? каждый раз придется переписывать код для разных типов?
tapochka
40 / 40 / 8
Регистрация: 25.04.2014
Сообщений: 499
07.06.2016, 21:50     Шаблонный класс для работы с разными типами данных и объявление методов в main #19
sodaily, шаблоны дают полиморфизм времени компиляции... но у вас массив A то из элементов либо int либо float... если я конечно правильно понял все
sodaily
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 121
07.06.2016, 21:53  [ТС]     Шаблонный класс для работы с разными типами данных и объявление методов в main #20
tapochka, мне подсказали сделать отдельный метод
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
void foo (T*A,int n)
 { 
     setlocale( LC_ALL, "Russian" );
 
     int n;
    cout << "Введите размерность массива: ";
    cin >> n;
    for( int i( 0 ); i < n; i++ )
    {
        cout << "Введите " << i + 1 << " - элемент: ";
        cin >> A[ i ]; 
        A = new T[ n ];
    
    M <T> obj;
    obj.Sort( A, n );
    cout << "Отсортированный массив: ";
    for( int i( 0 ); i < n; i++ )
    {
        cout << A[ i ] << " ";
    }
    obj.Obr(A, n );
    cout << "обратный порядок: ";
    for( int j = n - 1; j >= 0; j-- )
        cout << A[ j ] << " "; 
    }
а в мэин написать foo<int>();
foo<float>();,но это как то не работает в main
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.06.2016, 23:50     Шаблонный класс для работы с разными типами данных и объявление методов в main
Еще ссылки по теме:

Предусмотреть использование шаблонного класса для работы с различными типами данных - C++
Собственно само задание. Преобразовать квадратную матрицу, осуществив поворот элементов вокруг центра матрицы на 90 градусов против...

Оценить время выполнения и сложность простейших операций с разными типами данных - C++
Меня интересует-вопрос: можно как-то оценить по-быстрому время, которое программа тратит на различные операции - сравнение, умножение,...

Шаблонный класс для обработки массива - C++
Реализовать шаблонный класс, который делает что-то с массивом( например: делит на первый элемент, ищет max и т д)

Как перегрузить оператор "+" для шаблонного класса, инстанцированного разными типами? - C++
подскажите как перегрузить оператор &quot;+&quot; для шаблона , инстанцированных разными типами ...

Шаблонный метод с разными параметрами - C++
Доброе утро, не получается сделать шаблонную магию - указывать полную специализацию типа, и интелесенс VS должен подсказать тебе какие...


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

Или воспользуйтесь поиском по форуму:
tapochka
40 / 40 / 8
Регистрация: 25.04.2014
Сообщений: 499
07.06.2016, 23:50     Шаблонный класс для работы с разными типами данных и объявление методов в main #21
sodaily, http://cppstudio.com/post/5165/
Yandex
Объявления
07.06.2016, 23:50     Шаблонный класс для работы с разными типами данных и объявление методов в main
Ответ Создать тему
Опции темы

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