Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Принудительный выход из цикла https://www.cyberforum.ru/ cpp-beginners/ thread924811.html
Вообщем надо при определенном условии завершать вложенный цикл, такой код будет работать??? for(.....) { for(.....) { if (......) { дейтвие; дейтвие;
C++ Два взаимосвязных класса
Имеется два файла заголовка. A.h #ifndef A_INCLUDED #define A_INCLUDED #include "B.h" class B; class A{ public: B* nt; void Afun() {}
Работа функции remove_copy_if () C++
вот такая функция проверки является ли выражение в строке палиндромом bool IfPolyndrom (string phrase) { string temp; remove_copy_if (phrase.begin (), phrase.end (), temp.begin (),...
C++ Как подойти к решению задачи Кода и готового решения не прошу!!! Есть задачка грубо говоря звучит так: есть аудитория в которой сидят 30 человек, 1 за одной партой. У каждого есть максимум 4 соседа: спереди, справа, сзади,... https://www.cyberforum.ru/ cpp-beginners/ thread924748.html
C++ Задача по функциям (сохранение данных в массиве, вывод, среднее значение) https://www.cyberforum.ru/ cpp-beginners/ thread924736.html
Напишите программу, которая запрашивает у пользователя 10 результатов игры в гольф, сохраняя их в массиве. При этом необходимо обеспечить возможность прекращения ввода до ввода всех 10...
C++ const_cast mutable
в чем разница? спасибо.
Объединение строк и запись в файл C++
Небольшая задача на C++ состоит в том что из файла t.txt считываются строки, затем заносятся в массив, объединяются и записываются в файл r.txt. Пример: Файл t.txt: char* word = new char ;...
C++ Разделение числа на цифры Смущает часть моего алгоритма Для разделения числа на цифры я сделал следующее: Вместо int для числа использовал string(так как можно выделять каждый элемент отдельно) Потом создал вектор типа... https://www.cyberforum.ru/ cpp-beginners/ thread924693.html
C++ Принудительное завершение программы https://www.cyberforum.ru/ cpp-beginners/ thread924687.html
Здравствуйте. Ищу способы принудительного завершения программы. Посоветуйте что нибудь плз.
C++ Циклический ввод пары чисел Напишите программу, которая многократно запрашивает у пользователя пару чисел до тех пор, пока хотя бы одно из этой пары не будет равно 0. С каждой парой программа должна использовать функцию... https://www.cyberforum.ru/ cpp-beginners/ thread924661.html
189 / 159 / 35
Регистрация: 22.05.2013
Сообщений: 455
Записей в блоге: 1
17.07.2013, 22:35  [ТС] 0

Шаблоны. Нетиповые параметры

17.07.2013, 22:35. Просмотров 2684. Ответов 11
Метки (Все метки)

Ответ

Цитата Сообщение от Croessmah Посмотреть сообщение
Например, "C++ для профессионалов"
Мне б для новичков что то. 2 месяца только с++ учу.

Добавлено через 43 секунды
Цитата Сообщение от Croessmah Посмотреть сообщение
Вы случайно не разделили объявление и реализацию?
Да, конечно... то случайно затисалось. Во весь хидер
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
#ifndef ARRAY1_H
#define ARRAY1_H
#include <iostream>
using namespace std;
 
template <class elementType, int numberOfElements>
class Array
{
    template <class elementType1, int numberOfElements1>
    friend ostream &operator <<(ostream &, const Array<elementType1, numberOfElements1> &);
    template <class elementType1, int numberOfElements1>
    friend istream &operator >>(istream &, Array<elementType1, numberOfElements1> &);
 
public:
    Array();
    Array(const Array<elementType, numberOfElements> &);
    ~Array();
    int getSize() const;
    const Array &operator = (const Array<elementType, numberOfElements> &);
    int operator == (const Array<elementType, numberOfElements> &) const;
    int operator != (const Array<elementType, numberOfElements> &) const;
    elementType &operator [](int);
 
 
private:
    elementType *ptr;
    int size;
};
#endif
Добавлено через 42 секунды
А вот весь .cpp
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "stdafx.h"
#include "array1.h"
#include <iostream>
#include <assert.h>
#include <stdlib.h>
using namespace std;
 
template <class elementType, int numberOfElements>
Array<elementType, numberOfElements>::Array()
{
    size = numberOfElements;
    ptr = new elementType[size];
    assert(ptr != 0);
 
    for (int i = 0; i < size; i++)
        ptr[i] = 0;
}
 
template <class elementType, int numberOfElements>
Array<elementType, numberOfElements>::Array(const Array<elementType, numberOfElements> &init)
{
    size = init.size;
    ptr = new elementType[size];
    assert(ptr != 0);
 
    for (int i = 0; i < size; i++)
        ptr[i] = init.ptr[i];
}
 
template <class elementType, int numberOfElements>
Array<elementType, numberOfElements>::~Array()
{
    delete [] ptr;
}
 
template <class elementType, int numberOfElements>
int Array<elementType, numberOfElements>::getSize() const
{
    return size;
}
 
template <class elementType, int numberOfElements>
const Array<elementType,numberOfElements> &Array<elementType, numberOfElements>::operator = (const Array<elementType, numberOfElements> &right)
{
    if (right != this)
    {
        delete [] ptr;
        size = right.size;
        ptr = new elementType[size];
        assert(ptr != 0);
 
        for (int i = 0; i < size; i++)
            ptr[i] = right.ptr[i];
    }
 
    return *this;
}
 
template <class elementType, int numberOfElements>
int Array<elementType, numberOfElements>::operator==(const Array<elementType, numberOfElements> &right) const
{
    if (size != right.size)
        return 0;
    for (int i = 0; i < size; i++)
        if (ptr[i] != right.ptr[i])
            return 0;
    return 1;
}
 
template <class elementType, int numberOfElements>
int Array<elementType, numberOfElements>::operator!=(const Array<elementType, numberOfElements> &right) const
{
    if (size != right.size)
        return 1;
    for (int i = 0; i < size; i++)
        if (ptr[i] != right.ptr[i])
            return 1;
    return 0;
}
 
template <class elementType, int numberOfElements>
elementType &Array<elementType, numberOfElements>::operator[](int subscript)
{
    assert(0 <= subscript && subscript < size);
 
    return ptr[subscript];
}
 
template <class elementType1, int numberOfElements1>
ostream &operator <<(ostream &output, const Array<elementType1, numberOfElements1> &a)
{
    int i;
    for (i = 0; i < a.size; i++)
    {
        output << a.ptr[i] << ' ';
        if ((i + 1) % 10 == 0)
            output << endl;
    }
 
    if (i % 10 != 0)
        output << endl;
 
    return output;
 
}
 
 
template <class elementType1, int numberOfElements1>
istream &operator >>(istream &input, const Array<elementType1, numberOfElements1> &a)
{
    for (int i = 0; i < a.size; i++)
        input >> a.ptr[i];
 
    return input;
 
}


Вернуться к обсуждению:
Шаблоны. Нетиповые параметры
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.07.2013, 22:35
Готовые ответы и решения:

шаблоны и параметры
// есть вот такой шаблон template &lt;typename T, int L&gt; struct qu{}; // компилируется вот это...

Шаблоны как параметры
template&lt;typename T&gt; class beta { template&lt;class V&gt; class hold { V val; public:...

Шаблоны как параметры шаблона
Привет, в книге увидел такой пример template&lt;template&lt;typename T&gt; class x&gt; class y; но из...

Параметры-шаблоны у шаблонных классов
Объясните плз, кто может, для чего используются параметры-шаблоны у шаблонных классов, и как они...

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