Was bedeutet bzw. bewirkt dieses typedef
-
Hallo,
ich hab das schon mehrfach in Quellcodes gesehen. Was bewirkt dieses typedef in der abgeleiteten Klasse Sub ?
class Sub : public Base { typedef Base inherited; public: ... };Danke und Gruß
WoWe
-
Hi!
Mit typedef kannst du "quasi" neue Typen definieren. Egtl ist es ein Alias für vorhandene Typen. In deinem Beispiel kannst du z.B. folgendes schreiben:
// ... typedef Base inherited; // ... inherited foobar; // objekt vom typ "inherited" aka "Base"grüße
-
Achso, danke ! Ich dachte da ist ein anderer Sinn dahinter. In dem Beispiel was ich gesehen habe, war deine Erklärung nicht aufgeführt.
-
vielleicht wirds für type-trails verwendet?
falls eine andere classe diese class Sub als template-argument mitbekommt, kann sie mittels T::inherited auf dessen Base zugreifen.class A : public Base { ... typedef Base inherited; }; class B : public Base2 { typedef Base2 inherited; }; template<class T> class C { ... void do_something() { T::inherited bla; // Base oder Base2, kommt auf T an ... };(ungetestet)
Falls du wissen willst für was das Typedef in deinem Code benutzt wird, wirst du wohl nicht drum herum kommen uns diesen Code zu zeigen.
Wir haben hier im Moment leider gerade alle unsere Hellseherkugel verloren.
}
[/cpp]
-
Das ging nicht um einen speziellen Code, sondern die Frage war allgemein gehalten. Wie ich schon gepostet habe, ist mir dieses typedef schon mehrfach begegnet. Trotzdem danke für deine Erklärung.
-
typedef ist ganz hilfreich, wenn man z.B. später mal den Typ ändernwill. Sagen wir mal, du willst in deinem Programm mit int-Werten arbeiten. Dann machst du dir ein typedef. Später willst du dein programm sagen wir mal auf eine andere Platform portieren. Dummerweise arbeitet dort das int mit einer ganz andere Bit-Anzahl. Dann kannst du an einer Stelle in deinem Programm z.B. den int-Typ in einen long-Typ ändern. Ist nur ein Beispiel.
Du kannst aber typedef auch benutzen, um Schreibarbeit zu sparen:
typedef std::vector<std::string> strVec;strVec ist wesentlich kürzer, wenn man einen String-Vector sehr oft in seinem Programm verwendet.
-
Hallo Artchi,
das mit der Schreibarbeit war mir schon klar (nutze ich auch für uint uchar etc.), aber das mit der Platform wechseln und Datentyp anpassen ist eine sehr gute Erklärung. Hab ich bisher noch nicht drüber nachgedacht.
Danke !
Gruß WoWe