Bez STL napisz szablon klasy Array<T> zarządzającej tablicą elementów T o zmiennym dynamicznie rozmiarze. Zaimplementuj metody: 1. konstruktor 2. destruktor 3. bool add(const T&) 4. konstruktor kopiujący 5. operator przypisania.
Mój kod, w którym kompilator nie uznaje operatora przypisania (mam jakiś błąd). jestem początkującym programistą, dlatego z pewnością to zadania można by rozwiązać lepiej. Proszę o wszelkie propozycje zmian i wytknięcie błędów, poprawę kodu. Z pewnością się czegoś nauczę ;)
#include <iostream>
#include <string>
using namespace std;
template <class T>
class Array
{
private:
T * tablica;
int ile; //ilość elementów w tablicy
int i; // indeks tablicy
public:
Array();
~Array();
bool add(const T &);
Array(const Array & wz); // konstruktor kopiujacy
Array & operator=(const Array &);
void Array<T>::wypisz();
};
template <class T>
Array<T>::Array()
{
ile= 0; //ilość elementów
i= -1; // indeks tablicy
}
template <class T>
Array<T>::~Array()
{
delete [] tablica;
}
template <class T>
bool Array<T>::add(const T & elem)
{
i++;
T tmp[i];
for(int a=0; a< i; a++)
{
tmp[a]= tablica[a];
}
if(ile!=0)
delete [] tablica;
i++;
if((tablica = new T [i]))
{
for(int b=0; b<i; b++)
{
tablica[b] = tmp[b];
}
tablica[ile]=elem;
ile++;
return true;
}
else
return false;
}
template <class T>
Array<T>::Array(const Array & wz)
{
tablica = new T [wz.ile];
for(int a=0; a<wz.ile; a++)
{
tablica[a]=wz.tablica[a];
}
i= wz.i;
ile= wz.ile;
}
template <class T>
void Array<T>::wypisz()
{
for(int i=0; i < ile; i++)
{
cout << tablica[i] << endl;
}
}
/*template <class T>
Array & Array<T>::operator=(const Array & wz)
{
i=wz.i;
ile=wz.ile;
for(i=0; i<wz.ile; ile++)
{
tablica[i]=wz.tablica[i];
}
return *this;
}*/