Dlaczego niewywołuje się konstruktor domyślny ?

0

Witam.
Chce napisać szablon listy.
Niestety mam pewien problem.

class TLista
{
public:
	TLista() : head(NULL) {}
	~TLista();
	bool empty();
	bool add_end(const T &t);
private:
	struct Element
	{
		T wartosc;
		Element * nast;
		Element() : nast(NULL) {cout <<"konstruktor elem" << endl;}   // konstruktor domyślny
		Element(T wart) : wartosc(wart){}
	}*head;
};

W mainie tworze liste np TLista<int> lista. Niestety nie wywołuje mi si ękonstruktor domyślny dla struktury Element przez co element następny głowy nie inicjalizuje mi się NULLem.
Z góry dziękuje za pomoc i pozdrawiam

1

A dlaczego ma się wywoływać? Nigdzie nie tworzysz struktury Element. Jest tam wskaźnik, ale nie ma nigdzie new.

0

czemu konstruktor: Element(T wart) nie inicjalizuje składowej nast ?
czemu konstruktor: Element() nie inicjalizuje składowej wartosc ?
Radze dać tylko jeden konstruktor:
Element(const T &wartosc,Element * nast):wartosc(wartosc),nast(nast) { /ewentualnie coś/ }
wtedy push zapiszesz jednym wierszem:
head=new Element(wartosc,head);

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