auf int beschränken
-
hallo
kurze frage:
wie kann ich in c++ sagen:
wenn Variable "a" vom typ int dann mach das ansonsten gib fehlermeldung aus
quasi das man nur ein variable vom typ int un nicht char oder ähnlichem eingeben kann
grtüße manuel
-
Hmm... ich hätte ne idee, bin mir aber sicher, dass man das auch eleganter lösen könnte :
if (sizeof(a) == sizeof(int))Das funktioniert, es gibt aber halt auch typen, die die gleiche größe haben^^
-
Welchen Typ eine Variable hat, legst du doch von vornherein fest. Und indem du deine Funktion als
void func(int a)definierst, sorgst du dafür, daß dieser Funktion nur int-Werte übergeben werden können (oder Typen, die nach int konvertiert werden können - aber dann hast du keine Möglichkeit festzustellen, ob da eine Konvertierung dazwischenstand).
-
Mich würde mal interessieren,wo man so einen Typvergleich brauch.
-
man könnte das gebrauchen um eingaben über zb. << cin zu überprüfen.
ist es kein int dann false.
ich schätze mal das es so gemeint ist.
vielleicht meint er ja
isdigigt()
?
-
schön das es direkt mal so viele antworten gab kann nur leider mit den meisten nicht viel anfangen da ich mich noch nicht so weit mit c++ auskenne (machen das seit ca3 monaten in der schule)
ich habe die cpp datei mal unter http://manuel774.de/schule/ASCII-Programm.cpp bereit gestellt damit jeder reinschauen kann und vielleicht besser versteht was ich meine
das programm um das es sich handelt hat folgende funktionen:
es kann den wert zu einem zeichen ausgeben
es kann das zeichen zu einem wert ausgeben
und
in zwei darstellungsweisen die komplette ASCII-tabelle auszugebenproblem:
startet mal das programm->geht in die zweite auswahl->und gebt ein zeichen was keine zahl ist ein....grüße manuel
-
Achso, das geht eigentlich recht einfach

cin setzt ein Fehlerflag, wenn etwas ungültiges reingekommen ist. Das kannst du auswerten und entsprechend darauf reagieren:
cin>>eingabewert; if(!cin)//Fehler aufgetreten { cout<<"Falsche Eingabe!!"<<endl; cin.clear(); //Fehlerflags zurücksetzen cin.ignore();//Fehleingabe verwerfen }
-
afaik müsste das der code dafür sein:
if(typeof(a).name() == typeof(int).name()) { //a ist vom typ int } else { //a ist nicht vom typ int }auserdem:
es heistint main()und NICHT void !!!
-
was brauche ich den für eine header datei für den lösungsvorschlag von shade37337 ??
grüße
-
Gar keinen - aber wenn ich mir deinen Quellcode ansehe, hat der Ansatz auch recht wenig mit deinem Quellcode zu tun. (du hast deine Variable als int deklariert, also WIRD dir auch jeder Versuch sagen, daß das ein int ist - ob du erfolgreich etwas dort einlesen konntest, ist die andere Sache (aber das kann dir cin mitteilen, wenn du danach fragst))
-
mit CStolls Lösung klappts
danke dafür
grüße manuel