{"id":37,"date":"2009-05-12T20:45:21","date_gmt":"2009-05-12T20:45:21","guid":{"rendered":"http:\/\/devblog.cssec.de\/?p=37"},"modified":"2018-11-13T23:13:58","modified_gmt":"2018-11-13T23:13:58","slug":"die-probleme-mit-c-templates","status":"publish","type":"post","link":"https:\/\/www.cssec.de\/blog\/2009\/05\/12\/die-probleme-mit-c-templates\/","title":{"rendered":"Die Probleme mit C++-Templates"},"content":{"rendered":"<p>Heute habe ich versucht, einen Prototypen f\u00fcr mein neues Projekt zu erstellen.<br \/>\nAuf alle F\u00e4lle ist es ein interessantes Umfeld, wieder einmal eine Bereicherung f\u00fcr mein Beraterprofil.<br \/>\nIch h\u00e4tte nie gedacht einmal ein Projekt in der Embedded Programmierung zu bekommen.<\/p>\n<p>Mit Qt ist das ganze aber relativ locker und gleichzeitig schick zu realisieren.<br \/>\nAber neue Umgebung &#8211; neue Fehler.<br \/>\nHeute z.B. mit C++-Templates, in Java auch Generics genannt. F\u00fcr unser Projekt schnell mal eine Klasse angelegt, und da gingen die Sorgen los.<\/p>\n<p>Definition der Templates erfolgen mit:<\/p>\n<pre lang=\"cpp\">template\u00a0\u00a0class\u00a0Klassenname<\/pre>\n<p>Soweit so gut. Aber wie erbe ich von einer Template-Klasse und mache diese zu einer konkreten Klasse. Speziell in unserem Projekt, wie mache ich aus einer generellen Property-\u201dBean\u201d eine konkrete String-Bean?<br \/>\nNach 2 Stunden und gefrustetem Hin- und Her-Probieren, hat mir dann Reinhard und ein Code-Schnipsel aus einer generierten Klasse geholfen.<\/p>\n<p>Erst mal muss die Klasse im Header deklariert werden:<\/p>\n<pre lang=\"cpp\">class\u00a0Klasse2:\u00a0public\u00a0Klasse1<\/pre>\n<p>Das war ja auch recht easy. Schwieriger war da die Definition des Konstruktors.<br \/>\nim Header. Nach langem Probieren habe ich den Standard-Konstruktor genutzt:<\/p>\n<pre lang=\"cpp\">Klasse2(arguments);<\/pre>\n<p>Tja, aber wie wirds denn im cpp-File definiert? Nach verschiedenen Varianten, endlich den Fehler gefunden.<br \/>\nRichtig muss es hei\u00dfen:<\/p>\n<pre lang=\"cpp\">Klasse2::Klasse2(arguments)\u00a0:\u00a0Klasse(id)<\/pre>\n<p>Tja, schon bl\u00f6d, wenn man lange kein C++ und auch nie so richtig intensiv gemacht hat. Denn dann h\u00e4tte man sofort gesehen, dass der Ausdruck:<\/p>\n<pre lang=\"cpp\">Klasse2::Klasse1(arguments)<\/pre>\n<p>totaler Bl\u00f6dsinn ist.<\/p>\n<p>Naja, nun wei\u00df ichs ja. Ich hoffe, dass nicht noch mehr solche Schusselfehler kommen.<br \/>\nAber der Mensch ist ja lernf\u00e4hig :o)<\/p>\n<p>Bis sp\u00e4ter dann.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Heute habe ich versucht, einen Prototypen f\u00fcr mein neues Projekt zu erstellen. Auf alle F\u00e4lle ist es ein interessantes Umfeld, wieder einmal eine Bereicherung f\u00fcr mein Beraterprofil. Ich h\u00e4tte nie gedacht einmal ein Projekt in der Embedded Programmierung zu bekommen. Mit Qt ist das ganze aber relativ locker und gleichzeitig schick zu realisieren. Aber neue [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":139,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"_links":{"self":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/37"}],"collection":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/comments?post=37"}],"version-history":[{"count":8,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/37\/revisions"}],"predecessor-version":[{"id":140,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/posts\/37\/revisions\/140"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/media\/139"}],"wp:attachment":[{"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/media?parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/categories?post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cssec.de\/blog\/wp-json\/wp\/v2\/tags?post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}