Statische Template Methoden - undefinied reference to - Fehler
-
Genau, es wäre eben schön, wenn man an den generischen Typ explizite Anforderungen stellen könnte.
Auch auf die Gefahr hin, eine unnötige Diskussion auszulösen:
In Java kann man bei den generischen Typen eine Vererbungshierarchie fordern:public static <T extends Comparable<? super T>> void mergesort(T[] a) { //... }T muss also mit sich selbst oder einem Obertyp vergleichbar sein. Mit meiner Template-Klasse Comparable kann ich dieses Verhalten nur teilweise und auch mit ein wenig Trickserei nachahmen.
Aber wahrscheinlich sollte man gar nicht erst versuchen, die generischen Typen von Java mit C++-Templates nachzuahmen...Unabhängig von Templates bleibt für mich aber noch das Problem, dass ich keine Arrays von Objekten anlegen kann, die durch einen parametrisierten Konstruktor erzeugt werden müssen. Wie macht man das? Oder macht man das gar nicht?
-
Redfrettchen schrieb:
Genau, es wäre eben schön, wenn man an den generischen Typ explizite Anforderungen stellen könnte.
Auch auf die Gefahr hin, eine unnötige Diskussion auszulösen:
In Java kann man bei den generischen Typen eine Vererbungshierarchie fordern:public static <T extends Comparable<? super T>> void mergesort(T[] a) { //... }T muss also mit sich selbst oder einem Obertyp vergleichbar sein. Mit meiner Template-Klasse Comparable kann ich dieses Verhalten nur teilweise und auch mit ein wenig Trickserei nachahmen.
Aber wahrscheinlich sollte man gar nicht erst versuchen, die generischen Typen von Java mit C++-Templates nachzuahmen...Ja, jede Sprache hat ihre Eigenheiten - und die Java Generics sind auch nicht unbedingt mit C++ Templates vergleichbar.
Unabhängig von Templates bleibt für mich aber noch das Problem, dass ich keine Arrays von Objekten anlegen kann, die durch einen parametrisierten Konstruktor erzeugt werden müssen. Wie macht man das? Oder macht man das gar nicht?
Dann nimmst du halt keine blanken Arrays (sind sowieso sehr fehleranfällig), sondern die C++ Alternative: vector<>.
-
Na gut, also auf in die STL! ^^
Danke für die Unterstützung bis hier hin!