Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.07.2014, 21:06   #1
FauLL
Пользователь
 
Регистрация: 28.05.2010
Сообщений: 15
По умолчанию C++ - Перегрузка операторов в шаблоне

Всем привет. Такая проблема не знаю как организовать ввод комплексных чисел в массив.

.h
Код:
#include "stdafx.h"
 
 
template <class T> class Mas //Mas<int> *iperem; Mas<float> *fperem;
{
private:
    T *Buffer;
    int Size;
    int curSize;
public:
 
    Mas(int nSize) // конструктор
    {
        Size = nSize;
        curSize = 0;
        Buffer = new T[Size];
    }
 
    ~Mas() // деструктор
    {
        delete[]Buffer;
    }
 
    int GetCurSize()//размер массива
    {
        return curSize;
    }
 
    T GetValue(int index)// ячейка массива
    {
        return Buffer[index];
    }
 
    bool InElem(const T &  Value);
    void Show(CListBox *Cl);
    Mas<T>& operator=(Mas<T> &arg2);
    void ShowSort(CListBox *Cl);
};
 
template <typename T> bool Mas<T>::InElem(const T &  Value) // добавление элемента
    {
        if (curSize != Size)
        {
            for (int i = 0; i <= curSize - 1; i++)
                if (Buffer[i] == Value) return false;
 
            curSize++;
            Buffer[curSize - 1] = Value;
            return true;
        }
        else
        {
            return false;
        }
    }
 
 
template <class T> void Mas<T>::Show(CListBox *Cl)
    {
        Cl->ResetContent();
 
        for (int i = 0; i < curSize; i++)
        {
            CString s;
            s.Format(_T("[%i] = %i"),i , Buffer[i]);
            Cl->AddString(s);
        }
    }
 
template<class T> Mas<T>&  Mas<T>::operator=(Mas<T> &M2)
    {
        int i = 0;
        for (i; i <= M2->GetCurSize() - 1; i++)
        {
            Buffer[i + curSize] = M2->GetValue(i);
 
        }
        curSize = curSize + i;
    }
 
    
 
template <class T> void Mas<T>::ShowSort(CListBox *Cl)//Сортировка в обратном порядке
    {
        Cl->ResetContent();
 
        for (int i = curSize-1; i >= 0; i--)
        {
            CString s;
            s.Format(_T("[%i]%i"), i, Buffer[i]);
            Cl->AddString(s);
        
        }
 
    }
    
 
/////////////////////////////////////////////////////////////////
    struct Complex
    {
        double re, im;
        Complex()
        {
            re = im = 0.0;
        }
        Complex(double x, double y)
        {
            re = x;
            im = y;
        }
        Complex& operator=(Complex & arg2)
        {
            re = arg2.re;
            im = arg2.im;
            return(*this);
        }
    };
.cpp
Код:
Mas<Complex> *cMas = new Mas<Complex>(20);
Mas<Complex> *cMas2 = new Mas<Complex>(20);
 
void Clab3Dlg::OnBnClickedButton1()
{
    // добавление элемента
    UpdateData(1);
    if (cMas->InElem(Value1))
    {
        UpdateData(1);
        cMas->Show(&List);
    }
    else
    {
        MessageBox(_T("Добавление невозможно! \n"), _T("Ошибка!"), 0);
    }
}
 
 
void Clab3Dlg::OnBnClickedOk()
{
    // объединение множеств
    UpdateData(1);
    cMas = cMas2;
    cMas->ShowSort(&List3);
}
FauLL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перегрузка операторов Игорь_С Общие вопросы C/C++ 1 16.11.2012 11:11
Перегрузка операторов Jugger Помощь студентам 7 23.11.2011 23:40
Перегрузка операторов stas135642 Общие вопросы C/C++ 0 13.11.2011 23:09
Перегрузка операторов(С++) Сергей AfeR Помощь студентам 0 16.06.2010 18:34
Перегрузка операторов, Организация перегрузки операторов chagin_yav Помощь студентам 2 12.05.2008 09:15