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

Шаблонный класс, не работает с френд функцией - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Шаблон класса "Стек" http://www.cyberforum.ru/cpp-beginners/thread1198288.html
пример шаблона класса "стек" (Borland Builder): stack.h template <class Type> class Stack { private: Type* stk_ptr; int max_len; int top; public:
C++ Проброс ссылок Почему такое нельзя сделать?(MSVC 2010) class Base { shared_ptr<istream> in; public: Base(istream& input):in(&input){}; }; class Derived:public Base http://www.cyberforum.ru/cpp-beginners/thread1198282.html
C++ Как работает компилятор С++
Подскажите, как происходит компиляция исходного кода, написанного на С++? К примеру мы имеем файл test.cpp, в котором написан код программы, например: //Простая программа, написанная на языке C++. #include <iostream> using namespace std; main () { int num=1;
C++ Ввод и вывод типов переменных
Ребята, помогите пожалуйста! У меня практика, а c++ builder вообще не изучали(((( Вообщем, задание такое: Организовать ввод и вывод данных заданных типов, снабдив распечатки соответствующими заголовками. При осуществлении ввода\вывода использовать операторы cin и cout, для этого необходимо подключить директиву #include <iostream.h> Вот на какой я стадии: #include <iostream.h> int main() {...
C++ Создать класс «автомобиль» http://www.cyberforum.ru/cpp-beginners/thread1198242.html
помогите доделать программу. :cry: //Создать класс «автомобиль», имеющий марку (указатель на строку), //число цилиндров двигателя, мощность. Определить конструкторы, //деструктор и функцию печати. Создать public-производный класс – //«грузовики», имеющий грузоподъемность и тип кузова. Определить //конструкторы по умолчанию и с разным числом параметров, //деструкторы, функцию печати....
C++ Объясните пожалуйста детально этот код, КТО МОЖЕТ #include <iostream> #include <locale.h> #include <conio.h> #include <Windows.h> using namespace std; static char field = {" ", "# #", "# #", подробнее

Показать сообщение отдельно
Спайдермэн
0 / 0 / 0
Регистрация: 04.05.2014
Сообщений: 125
03.06.2014, 22:26     Шаблонный класс, не работает с френд функцией
Переделал программу под шаблонный класс, все методы работают справно когда задаешь тип. Да вот только проблема с френд функцией. Светит ошибку на выделение динамической памяти в мейне Sample*aa=new int [n];
Вот код:

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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <iostream>
#include <math.h>
using namespace std;
 
template <class Data> class Sample //ГёГ*áëîГ*Г*ûé ГЄГ«Г*Г±Г± âûáîðêГ*
{
    int n;
    Data a[50];
public:
    Sample();
    Sample(int n, int a[50]);
    void scan();
    void print();
    Data sred();
    Data disp();
    Data rasm();
    Data otkl();
    friend double kohren(Sample *aa, int n);
};
 
template <class Data>
Sample<Data>::Sample()
{
    n=0;
    for(int i=0;i<50;i++)
        a[i]=0;
}
 
template <class Data>
Sample<Data>::Sample(int n, int a[50])
{
    this->n=n;
    for(int i=0;i<50;i++)
        this->a[i]=a[i];
}
 
template <class Data> 
void Sample<Data>::scan()
{
    cout<<"print count elements: ";
    cin>>n;
    cout<<"print "<<n<<" elementts: ";
    for(int i=0;i<n;i++)
    {
        cin>>a[i];
    }
}
 
template <class Data>
void Sample<Data>::print()
{
    cout<<n<<" elements: ";
    for(int i=0;i<n;i++)
        cout<<a[i]<<" ";
    cout<<endl;
}
 
template <class Data>
Data Sample<Data>::sred()
{
    Data c=0;
    for(int i=0;i<n;i++)
    {
        c+=a[i];
    }
    return c/n;
}
 
template <class Data>
Data Sample<Data>::disp()
{
    Data s=0;
    for(int i=0;i<n;i++)
    {
        s+=(a[i]-sred())*(a[i]-sred());
    }
    return s/(n-1);
}
 
 template <class Data>
Data Sample<Data>::rasm()
{
    Data max=0, min=10000;
    for(int i=0;i<n;i++)
    {
        if(a[i]<min)
            min=a[i];
        if(a[i]>max)
            max=a[i];
    }
    return max-min;
}
 
 template <class Data>
Data Sample<Data>::otkl()
{
    return sqrt(disp());
}
 
 
template <class Data>
double kohren(Sample <Data> *aa,int n)
{
   double s=0;
   double max=0;
   for(int i=0;i<n;i++)
   {
       if(max<aa[i].disp())
       max=aa[i].disp();
       s+=aa[i].disp();
   }
   return max/s;
}
 
 
int main()
{
    Sample <int> a;
    a.scan();
    cout<<"Srednee: "<<a.sred()<<endl;
    cout<<"dispersiya: "<<a.disp()<<endl;
    cout<<"rasmah: "<<a.rasm()<<endl;
    cout<<"srednee otklonenie: "<<a.otkl()<<endl;
    int n=3;
    Sample*aa=new int [n];
    for(int i=0;i<3;i++)
    aa[i].scan();
    cout<<"kriteriy kohrena "<<kohren (aa, n);
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 13:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru