Problem Template adden Liste und Array
-
Hei zusammen.
Also ich hab folgendes:
template <typename T> class List { public: List(); List(const List & orig); virtual ~List(); List & add(const T & t); List & add(const List<T> & tList); List & add(const T[] & tArray);mein problem ist jetz, dass ich einmal eine liste zu meiner Liste adden will und einmal ein Array. Bei der Array-Methode meckert der Compiler "unable to resolve identifier tArray"
Woran könnte das liegen?
Danke,
strahli
-
Weil Du versuchst, Java zu programmieren

Entweder
List & add(const T* tArray, size_t laenge);Oder
template<size_t N> List& add(const T (&array)[N]);Letzteres funktioniert nur, wenn es sich um ein echtes, nicht zu einem Pointer verkümmertes Array handelt.
-
... oder evtl.
List & add(const std::vector< T >& tArray);?
-
Schau dir mal an, wie C++ das macht, Stichwort
insertvonstd::vector.
-
LordJaxom schrieb:
Weil Du versuchst, Java zu programmieren

List & add(const T* tArray, size_t laenge);dankeschön - funktioniert jetz

-
LordJaxom schrieb:
Weil Du versuchst, Java zu programmieren

Entweder
List & add(const T* tArray, size_t laenge);Und du versuchst, C zu programmieren?

template<class Iterator> List& add(Iterator first, Iterator last) { std::for_each(first, last, [this](T const& t){add(t);}); } // ... std::vector<T> tvec; T array[N]; std::list<T> tlist; List myList; myList.add(std::cbegin(tvec), std::cend(tvec)); myList.add(std::cbegin(array), std::cend(array)); myList.add(std::cbegin(tlist), std::cend(tlist));
-
strahli schrieb:
List(); List(const List & orig); virtual ~List();Warum ist der Destruktor virtuell? Und du hast den Zuweisungsoperator vergessen.
Im Übrigen, falls es um Produktivcode geht, benutze bestehende Implementierungen wie
std::list. Zum Lernen ist eine selbstgeschriebene Liste aber ganz nützlich.