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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Найти сумму элементов матрицы кратных 3 http://www.cyberforum.ru/cpp-beginners/thread115324.html
В общем необходимо написать программу с таким условием: Дана прямоугольная матрица. Определить: 1) сумму элементов кратных 3 2) номер первой из строк, содержащих хотя бы один положительный элемент Максимальный размер массива 10*10.
C++ Программа для перевода данного натурального числа в N-ную систему счисления у меня к вам нестандартная просьба... вот готовый код. Можете коротко расписать объяснения к каждой строке(строки ввода, вывода и объявления переменных не нужно) Особенно это ms=num1>9?i-10+'a':num1+'0'; а то я никак не пойму.... зарание спасибо #include<iostream.h> #include<stdio.h> void main() { int ss,k1=10,k2=11,t=1,num1,i; double num; char ms; char znak=' '; http://www.cyberforum.ru/cpp-beginners/thread115323.html
факториал числа. я начинающий C++
Нужно создать функцию для вычисления факториала числа. Чтобы числа вводить с клавиатуры и предусмотреть возможность многократных расчетов с различными данными в С++ помогите плиз
C++ строковые
Привет всем) Вот такая штука Написать программу, которая считывает английский текст из файла и выводит на экран слова, начинающиеся с гласных букв
C++ Добавление файла через свойства проекта http://www.cyberforum.ru/cpp-beginners/thread115301.html
У меня VS2010, требуется открыть файл через argv вот так: FILE *txtfile; txtfile=fopen(argv,"rt"); Как можно сделать, чтобы файл корректно открывался? Файл лежит в папке с проектом, программа запускается не из командной строки. Надо как-то прописать имя оригинального файла в Project->Properties->Configuration Properties->Debugging->Command Arguments. Подскажите, пожалуйста, как это...
C++ Запись в фаил Здравствуйте, возник вопрос,возможно он покажется немного странным , но всё же хД Суть такая: нужно было придумать некий простенький алгоритм шифрования строк char, чтобы результат записывался в фаил. Собственно я его придумал, провёл кое-какие расчёты. 12 Символьная строка шифруеться в 144 ' бита '(ну т.е. бита всмысле 144 символа 0 или 1 ) Так вот.если эти 144 записывать в фаил , то... подробнее

Показать сообщение отдельно
Genius Ignat
1233 / 771 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
11.04.2010, 16:54     Как правильно вызывать конструктор шаблонного класса?
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; 
}
 
Текущее время: 11:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru