шаблон класса Vector
Добавлено: 04 дек 2009, 21:31
На основе созданного класса Vector разработать шаблон класса Vector , который может содержать как вещественные числа, так и объекты класса
Polynom.
класс полином описан в соседнем топике.
собственно обьявление операторов правильное? и реализация в целом?
Polynom.
класс полином описан в соседнем топике.
собственно обьявление операторов правильное? и реализация в целом?
Код: Выделить всё
template <class T> class Vector
{
private:
size_t m_Dim; // Размер вектора.
T* m_pVec; //адрес массива с координатами вектора
public:
Vector(size_t, T*); //конструктор с 2-мя параметром
Vector(size_t); //конструктор с 1-им параметром
Vector();
Vector(const Vector&); //конструктор копирования
~Vector(); // Деструктор.
double GetKof(const size_t i); // Получение i-ой координаты.
void SetKof(const size_t i, const double x); // Изменение i-ой координаты.
size_t GetDim() const {return m_Dim;} // Получение размера вектора.
void Show() const; // Вывод вектора.
};
template <class T> Vector<T>::double Vector::GetKof(const size_t i)
{
if (i > m_Dim)
{
cout<<szbuf.toOem("Неправильное значение")<<endl;;
exit(-1);
}
return m_pVec[i-1];
}
template <class T> Vector<T>::void Vector::SetKof(const size_t i,const double x )
{
if (i > m_Dim)
{
cout<<szbuf.toOem("Неправильное значение ")<<endl;
exit(-1);
}
m_pVec[i-1]=x;
}
template <class T> Vector<T>::void Vector::Show() const
{
cout << '(';
size_t i;
for (i = 0; i < m_Dim; ++i)
{
cout << m_pVec[i];
if (i < m_Dim - 1) cout << ", ";
}
cout << ')' << endl;
}
template <class T> Vector<T>::Vector(const size_t Dim, T*):m_Dim(Dim)
{
m_pVec=new T[Dim];
if (!m_pVec)
{
cout <<szbuf.toOemA( "Ошибка! Неверный размер вектора." )<< endl;
exit(-3);
}
for(int i=0;i<m_Dim;i++)
m_pVec[i]=pVec[i];
}
template <class T> Vector<T>::Vector(size_t Dim):m_Dim(Dim) // к-ор с 1им арг
{
m_pVec= new T[m_Dim=Dim];
if (!m_pVec)
{
cout <<szbuf.toOemA( "Ошибка! Неверный размер вектора." )<< endl;
exit(-1);
}
for(int i=0;i<m_Dim;i++)
m_pVec[i]=0.0;
}
template <class T> Vector<T>::Vector():m_Dim(0) // к-ор без арг
{
m_pVec=new T[m_Dim+1];
if(!m_pVec)
{
cout<<"Error"<<endl;
exit (-1);
}
}
template <class T> Vector<T>::Vector(const Vector& cv):m_Dim(cv.m_Dim) //конструктор копирования
{
if (!(m_pVec=new T[m_Dim]))
{
cout<<szbuf.toOemA("Нет памяти") <<endl;
exit(-1);
}
//копирование координат
size_t i;
for(i=0;i<m_Dim;++i)
m_pVec[i]=cv.m_pVec[i];
cout<<szbuf.toOemA("копия создана Vec") <<endl;
}
template <class T> Vector<T>::~Vector()
{
cout << szbuf.toOemA("Вектор успешно удалён ...") << endl;
delete[] m_pVec;
}