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

Шаблонный класс динамический вектор - C++

Восстановить пароль Регистрация
 
himbeere
0 / 0 / 0
Регистрация: 03.11.2012
Сообщений: 3
23.04.2014, 20:33     Шаблонный класс динамический вектор #1
Создала шаблонный класс одномерный динамический массив. Нужно заполнить массив числами какими-нибудь.
Объявила данные и методы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
template <class T>
class Exm
{
protected:
    T *mas;
    int len;
public:
    Exm(); //конструктор
    Exm(int ln);
    Exm(const Exm <T> & prm); //копирующий конструктор
    ~Exm(); //деконструктор
    void print(TListBox *ListBox1) const;
    void Exm:: prisv(const Exm& m);
    T* Exm::fullV(); //заполнение массива
};
Инициализация конструкторов:
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
        template <class T>
    Exm <T>::Exm()
    {
        len = 5;
                mas = new T[len];
    }
 
        template <class T>
    Exm <T>::Exm(int ln)
    {
                len = ln;
                mas = new T[len];
    }
 
        template <class T>
        Exm <T>::Exm(const Exm& prm)
        {
                        T *x=prm.mas;
                        len = prm.len;
                        this->mas=new T [len];
                        for (int i=0; i<len; i++)
                        * (this->mas+i) =* (x+i) ;
                        delete [] x;
        }
 
        template <class T>
        void Exm <T>:: print(TListBox *ListBox1) const
    {
                for (int i=0; i<len; i++)
        ListBox1->Items->Add(IntToStr(mas+i));
        ListBox1->Items->Add("");
    }
Таким образом при выводе, например переменных конструктора по умолчанию
C++
1
2
3
4
5
Exm <float> s1,s2,s3;
void __fastcall TForm1::Button1Click(TObject *Sender)
{
   s1.print(ListBox1);
}
Выводятся одни единицы.
Создала функцию для заполнения массива числами:

C++
1
2
3
4
5
6
7
8
         template <class T>
         T* Exm <T>::fullV()
         {
                mas = new T[len];
                for (int i=0; i<len; i++)
                mas[i] = rand()%10;
                return mas;
         }
И вызываю ее в конструкторе по умолчанию:
C++
1
2
3
4
5
6
7
        template <class T>
    Exm <T>::Exm()
    {
        len = 5;
                //mas = new T[len];
                fullV();
    }
Но, естественно, не работает, ошибку не выдает при компиляции, но выводит так же одни единицы. Помогите сделать заполнение массива, пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.04.2014, 20:33     Шаблонный класс динамический вектор
Посмотрите здесь:

Переделать класс в шаблонный класс C++
шаблонный динамический класс DynArr C++
Передать итератор на шаблонный вектор в функцию C++
Шаблонный класс C++
C++ Шаблонный класс
C++ Создать шаблонный класс - двумерный динамический массив
Создать динамический шаблонный класс односвязный список - List C++
C++ шаблонный класс

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 02:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru