009
28.06.2012, 22:38 Uhr
~f.-th.
Gast
|
Hier noch etwas zu offsetof und C++11: http://en.cppreference.com/w/cpp/types/offsetof
Entspricht folgender Quelltext mehr deinen Vorstellungen:
C++: |
#include <iostream> #include <string>
//Diesmal drei Parameter, U ist per default gleich T, ebenso V template <typename T, typename U=T, typename V=T> struct Triple { //drei Datenelemente T first; U second; V third; Triple(const T &a, const U &b, const V &c) : first(a), second(b), third(c) {} Triple(const Triple &t) : first(t.first), second(t.second), third(t.third) {} ~Triple() {}
Triple& operator=(const Triple&); };
//Definition außerhalb der Klasse: template <typename T, typename U, typename V> Triple<T,U,V>& Triple<T,U,V>::operator=(const Triple<T,U,V> &t) { if (this == &t) return *this;
first = t.first; second = t.second; third = t.third; return *this; }
int main (int argc, char **argv) { //ein Tripel vom Typ float: Triple<float> floatTriple(5.1,8.9,11.2); std::cout<<floatTriple.first<<'\t'<<floatTriple.second<<'\t'<<floatTriple.third<<'\n';
//Erster Parameter ist ein string, der zweite ein int der dritte ein float: Triple<std::string, int, float> mixTriple("zwanzig", 20, 3.7); std::cout<<mixTriple.first<<'\t'<<mixTriple.second<<'\t'<<mixTriple.third<<'\n'; }
|
Das Thema Templates scheint nicht einfach. Wird in Netz oft heftig, teils widersprüchlich diskutiert. Auch die Beispiele aus dem Netz laufen oft nicht auf Anhieb. Ursachen => Compilermarotten oder fehlerhafter Quellcode? |