enum-ausgabe?
-
Hallo, ich lerne c++ mit Hilfe eines Buches und habe ein Problem: Ich möchte eine Aufzählung mit enum starten und mit typedef definieren. Kann man dann Werte der Aufzählung auf den Bildschirm bringen? Hier der code:
#include <iostream> using namespace std; void wait () { std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); std::cin.get(); } enum werte {wert0, wert1, weiterer_wert, noch_einer, da_ist_einer, und_hier}; typedef enum werte wert; wert a[1]; int main() { cout << a; wait(); return 0; }
Doch es wird immer 0x443010 ausgegeben. Mach ich was falsch? Freue mich über Antworten!
-
1. Das typedef ist unnötig. In C++ ist der Name einer Struktur / eines Enum automatisch ein Typname.
2. a ist ein Array von wert. Der Name eines Arrays kann implizit in einen Zeiger auf sein erstes Element umgewandelt werden. Du müsstest a[0] ausgeben.Allerdings wage ich zu bezweifeln, dass das zu dem von Dir gewünschten Ergebnis führt. Da ich letzteres aber noch nicht genau erfassen konnte, sag doch einfach mal was Du als Ausgabe gerne sehen würdest.
-
also so:?
#include <iostream> using namespace std; void wait () { std::cin.clear(); std::cin.ignore(std::cin.rdbuf()->in_avail()); std::cin.get(); } enum werte {wert0, wert1, weiterer_wert, noch_einer, da_ist_einer, und_hier}; werte a[0]; int main() { cout << a[0]; wait(); return 0; }
da gibt er aber 0 aus
-
Jo, das heisst dass in a[0] "0" drinsteht. Das ist der Zahlenwert für "wert0".
Ich wiederhole die Frage nochmal: Was möchtest Du denn sehen? Den String "wert0"? Das geht nicht, da die enum-Wertbezeichner nach dem Compilieren nicht mehr existieren. Da gibt es nur noch die Zahlenwerte.
-
achso, ja, ich wollte "wert0" sehen. Gut, das ist dann abgeschlossen, vielen Dank!
-
anmerkung:
enum werte {wert0, wert1, weiterer_wert, noch_einer, da_ist_einer, und_hier};
wert0 = 0
wert1 = 1
...
und_hier = 5enum werte {wert0, wert1=100, weiterer_wert, noch_einer, da_ist_einer, und_hier};
wert0 = 0
wert1 = 100
...
und_hier = 104