Am Sonntag 09 Dezember 2001 21:34 schrieben Sie:
...
void do_something(unsigned int type) { mystruct s; if (type == TYPE_A) s.c = 50; if (type == TYPE_B) s.c = "Hello"; }
Frage:
- Geht das hier beschriebene Beispiel problemlos (laut Dokumentation ist
die Eventstruktur von SDL so aufgebaut, deswegen default=yes)
- Wie funktioniert die Erkennung, auf welchen Typ der Union ich schreibe?
In welchen Typ sich am besten casten laesst (default=dontknow)?
Wenn string "char *" ist, sollte sich s.c (welches int für den gcc ist) problemlos auf "char *" casten lassen, da beides die gleiche Größe hat.
Falls aber string ein Objekt/Struct ist, g++ verweigert übrigens die Compilierung wenn du struct_a und struct_b keine unterschiedlichen Namen gibst mit denen du dann deine Typisierung hättest, sollte ein Cast von int auf string in die Hose gehen.
Stephan