problem z destryktorem szblonu klas

0

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]; }
	};
 
0
void resize(const unsigned int &k)
{
	...
	tabk = new Tk[lk];
	lk = k;
}

Nie pomyliłeś kolejności?

Zeruj wskaźniki w konstruktorach.

Jeśli chodzi o drugie pytanie, odpowiedź brzmi: nie ma takiej opcji.

0

Dzięki, ślepy chyba jestem. A czy jest na Linux-a jakieś IDE z debuger-em takim w stylu MS tj. krok po kroku i z watches.

0

cały problem w tym, ze całe tony. Zacznij od:

  1. Code Blocks
  2. Eclipse
  3. Qt Creator
    Jeśli używasz Ubuntu to w menadżerze pakietów
    wpisz sobie IDE (Integrated Development Environment), tam znajdziesz do koloru do wyboru.

1 użytkowników online, w tym zalogowanych: 0, gości: 1