1 /* 2 * intlist.h 3 * 4 * Beispielprogramm eingebettete Klassen. 5 * Variante mit std::unique_ptr. 6 * 7 * Autor: H.Drachenfels 8 * Erstellt am: 2.12.2022 9 */
10 #ifndef INTLIST_H
11 #define INTLIST_H
12
13 #include <memory>
14
15 class intlist final
16 {
17 private:
18 class element;
19 // head siehe unten
20
21 public:
22 intlist();
23 // ~intlist() = default;
24 // entity class ohne Kopiersemantik
25 intlist(intlist&) = delete;
26 intlist& operator=(intlist&) = delete;
27 // entity class hier mit Move-Semantik
28 intlist(intlist&&) = default;
29 intlist& operator=(intlist&&) = default;
30
31 intlist& insert(int);
32
33 class iterator final
34 {
35 private:
36 element *current;
37 explicit iterator(element*);
38 public:
39 bool operator!=(const iterator&) const;
40 int& operator*() const;
41 iterator& operator++();
42
43 friend class intlist;
44 };
45
46 iterator begin();
47 iterator end();
48
49 private:
50 class element final
51 {
52 std::unique_ptr<element> next;
53 int n;
54
55 element(element *e, int m) : next(e), n(m) { }
56 friend class intlist;
57 friend class intlist::iterator;
58 };
59
60 std::unique_ptr<element> head;
61 };
62
63 #endif
64