class lista {
class wezel {
wezel *nast; // next node in list
std::string napis; // string in node
// ...
public:
void set_napis(string napis1) { napis = napis1; }
void set_nast(wezel *nast1) { nast = nast1; }
wezel(const std::string napis1, wezel *nast1) : napis(napis1), nast(nast1) {}
friend ostream& operator<< (ostream &wy, const wezel &wzl) {
if (wzl.nast) return wy << wzl.napis << ", " << *wzl.nast;
else return wy << wzl.napis;
}
};
wezel *poczatek; // pointer to the beg of the list
public:
lista();
lista(const lista &lst);
lista(lista &&lst);
lista(initializer_list<std::string> lst);
lista& operator= (const lista &lst);
lista& operator= (lista &&lst);
~lista();
public:
friend ostream& operator<< (ostream &wy, const lista &lst) {
if (lst.poczatek) return wy << "(" << *lst.poczatek << ")";
else return wy << "()";
}
Я хочу написать деструктор, который удаляет не только член класса lista, но и wezel (все узлы) Указатель в wezel означает, что указатель на следующий элемент списка * nast. Если это nullpointer, это конец списка. Я знаю, что я не должен создавать деструкторы для строки, но как насчет этих указателей и т. Д.?
Большие извинения за мой английский. Я из Польши;) Greets;)
Почему бы просто не использовать http://www.cplusplus.com/reference/list/list/ вместо того, чтобы изобретать колесо? –
, потому что это наша задача от репетитора :) –
Я вижу - вы хотите, чтобы мы записали вашу домашнюю работу. –