Witam,
Mam problem z destruktorem w szablonie klas. Gdy tylko uruchomi się destruktor w klasie A dostaje komunikat na konsole "Przerwane". Nie mam pojęcia co robię źle i byłbym bardzo wdzięczny za pomoc.
Przy okazji mam pytanie czy da się jakoś zrobić tablicę klas używając konstruktora z parametrami, chodzi mi o coś takiego:
B *b = new B<int>(5, 5)[10];
#include <iostream>
using namespace std;
template <class Tk> class A;
template <class Tk> class A
{
private:
unsigned int lk;
Tk *tabk;
public:
A() { lk = 0; }
~A()
{
if (tabk != NULL) delete []tabk;
lk = 0;
}
void deltab()
{
if (tabk != NULL) delete []tabk;
lk = 0;
}
void resize(const unsigned int &k)
{
if (lk > 0) delete []tabk;
tabk = new Tk[lk];
lk = k;
}
Tk &operator[](int i) { return tabk[i]; }
};
template <class Tw> class B;
template <class Tw> class B
{
private:
unsigned int lw, lk;
A<Tw> *tabw;
public:
B() { lw = lk = 0; }
B(const B<Tw> &z) { }
B(const unsigned int &w, const unsigned int &k)
{
lw = w;
lk = k;
tabw = new A<Tw>[w];
for(int i = 0; i < w; i++) tabw[i].resize(k);
}
~B() { delete[] tabw; }
void resize(const unsigned int &w, const unsigned int &k)
{
if (lw > 0) delete []tabw;
lw = w;
lk = k;
tabw = new A<Tw>[w];
for(int i = 0; i < w; i++) tabw[i].resize(k);
}
unsigned int w() { return lw; }
unsigned int k() { return lk; }
A<Tw> &operator[](int i) { return tabw[i]; }
};