Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Найти сумму элементов матрицы кратных 3 https://www.cyberforum.ru/ cpp-beginners/ thread115324.html
В общем необходимо написать программу с таким условием: Дана прямоугольная матрица. Определить: 1) сумму элементов кратных 3 2) номер первой из строк, содержащих хотя бы один положительный...
Программа для перевода данного натурального числа в N-ную систему счисления C++
у меня к вам нестандартная просьба... вот готовый код. Можете коротко расписать объяснения к каждой строке(строки ввода, вывода и объявления переменных не нужно) Особенно это ...
факториал числа. я начинающий C++
Нужно создать функцию для вычисления факториала числа. Чтобы числа вводить с клавиатуры и предусмотреть возможность многократных расчетов с различными данными в С++ помогите плиз
C++ строковые Привет всем) Вот такая штука Написать программу, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв https://www.cyberforum.ru/ cpp-beginners/ thread115308.html
C++ Добавление файла через свойства проекта https://www.cyberforum.ru/ cpp-beginners/ thread115301.html
У меня VS2010, требуется открыть файл через argv вот так: FILE *txtfile; txtfile=fopen(argv,"rt"); Как можно сделать, чтобы файл корректно открывался? Файл лежит в папке с проектом, программа...
C++ Запись в фаил
Здравствуйте, возник вопрос,возможно он покажется немного странным , но всё же хД Суть такая: нужно было придумать некий простенький алгоритм шифрования строк char, чтобы результат записывался в...
C++ Програма для вывода узора в виде звездочек
Помогите написать программу на "C", использующую оператор goto, которая выводит на экран последовательность звездочек. Например, для числа 5 последовательность будет иметь вид: Программа должна...
C++ Статические массивы, члены класса необходимо создать статический массив. компилятор gcc #include<iostream> class c{ public: static const char x = "qwe"; }; int main(){ std::cout<<c::x; https://www.cyberforum.ru/ cpp-beginners/ thread115281.html
C++ цикл в обратную польскую запись https://www.cyberforum.ru/ cpp-beginners/ thread115267.html
Смысл такой - на входе есть файл,где записан цикл.Программа должна преобразовать запись в обратную польску и записать в файл. Помогите с литературой или исходниками,которые могут помочь. ...
C++ Заполнение массива по диагонали! всем привет!помогите пожалуйста!не получается выстроить порядок! задача такая! заполнить массив 6*6 цыфрами от 1 до 21 по следущей схеме: 6 0 0 0 0 0 5 11 0 0 0 0 4 10 0 0 0 0 3 9 14... https://www.cyberforum.ru/ cpp-beginners/ thread115257.html
1257 / 795 / 108
Регистрация: 16.09.2009
Сообщений: 2,010
11.04.2010, 16:54 0

Как правильно вызывать конструктор шаблонного класса?

11.04.2010, 16:54. Просмотров 676. Ответов 2
Метки (Все метки)

Ответ

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
#include "iostream"
 
template <class T> 
class A{
        T *v;
        int dim;
 
public:
A(T *a,int n);
virtual ~A(){ delete []v ; } //освобождение памяти
 
void show(){
    for( int i = 0 ; i < dim ; i++)std::cout<<v[i]<<' ';
    std::cout<<'\n';
}
        
};
 
template <class T> 
A<T>::A(T *a,int n){
        if(n<=0){
            std::cout<<"dimension must be positive\n";
                exit(1);}
        dim=n;
        v=new T[n];
        for(int i=0;i<dim;i++) v[i]=a[i];
}
 
 
 
int main(int argc, char* argv[]){ 
       
        int a[5]={4,-3,87,2,-45};
        A<int> v(a,5); 
        v.show();
    
 return 0; 
}
Добавлено через 9 минут
Забыл ещё приделать конструктор копирования и операцию присваивания щас прикручу.

Добавлено через 12 минут
Вот более менее законченный пример.
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
#include "iostream"
 
 
template <class T> 
class A{
        T *v;
        int dim;
 
public:
 
A(T *a,int n);
A(const A<T>&p);
const A<T>operator =(const A<T>&p);
 
virtual ~A(){ delete []v ; } //освобождение памяти
 
void show(){
        for( int i = 0 ; i < dim ; i++)std::cout<<v[i]<<' ';
        std::cout<<'\n';
}
        
};
 
template <class T> 
A<T>::A(T *a,int n){
        if(n<=0){
                        std::cout<<"dimension must be positive\n";
                exit(1);}
        dim=n;
        v=new T[n];
        for(int i=0;i<dim;i++) v[i]=a[i];
}
 
 
//конструктор копирования.
template <class T> 
A<T>::A(const A<T>&p){
v = new T[p.dim];  //выделяем память
dim=p.dim;
for( int i = 0; i < p.dim ; i++ )v[i]=p.v[i];  //копируем.
}
 
 
template <class T> 
const A<T> A<T>::operator = (const A<T>&p){
if(&p==this)return *this;
 
delete []v;
v = new T[p.dim];
 
dim = p.dim;
for( int i = 0; i <p.dim ; i++ )v[i]=p.v[i];
return *this;
}
 
int main(int argc, char* argv[]){ 
       
        int a[5]={4,-3,87,2,-45};
 
        int k[5]={1,1,1,1,1};
 
        A<int> v(a,5); 
        v.show();
        A<int> b(v); //копируем.
        b.show(); 
 
        A<int> c(k,5);
 
        c.show();
        c = v;       //присваиваем.
        c.show();
 
    A<int> r = A<int>(k,5);
        r.show();
    
    
 return 0; 
}


Вернуться к обсуждению:
Как правильно вызывать конструктор шаблонного класса?
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.04.2010, 16:54

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Почему в списке инициализации конструктора дочернего класса нельзя вызывать конструктор родительского через его пространство имён?
Есть класс D и от него порождён класс Wd Тут вот например всё работает корректно (использую...

Для шаблонного класса перегрузить оператор присваивания, copy-конструктор, объекты cin и cout, оператор *
Помогите в следующем: Для класса шаблона следует перегрузить оператор присваивания, конструктор...

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

Инициализация шаблонного класса(В конструкторе класса после двоеточия вновь имя класса)
Всем доброго времени суток! Пытаюсь разобраться как работает приведенный мной код. Конкретно,...

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