C++ Compilerfehler
-
Meinst du dies?
union rechnervar { struct { long summand1; long summand2; }add; struct { long minuent1; long minuent2; }sub; struct { long multiplikator1; long multiplikator2; }mul; struct { long divisor1; long divisor2; }div; };
-
Danke, nun will ich über den Pointer die unterstrukturen ansprechen:
#include <iostream> using namespace std; struct rechner { struct add { long summand1; long summand2; long loesung; }; struct sub { long minuent1; long minuent2; long loesung; }; struct mul { long multiplikator1; long multiplikator2; long loesung; }; struct div { long divisor1; long divisor2; long loesung; }; }; void addition(struct rechner *add); void subtraktion(struct rechner *sub); void multiplikation(struct rechner *mul); void division(struct rechner *div); int main() { int variante; struct rechner variablen; struct rechner *ptr; ptr=&variablen; cout<<"1->Addition 2->Subtraktion 3->Multiplikator 4->Division: "; cin>>variante; switch(variante) { case 1: addition(ptr); break; case 2: subtraktion(ptr); break; case 3: multiplikation(ptr); break; case 4: division(ptr); break; } } void addition(struct rechner *add) { cout<<"Erster Multiplikator: "; cin>add.add->summand1; cout<<endl<<"Zweiter Multiplikator: "; } void subtraktion(struct rechner *sub) { } void multiplikation(struct rechner *mul) { } void division(struct rechner *div) { }cin>add.add->summand1; so klappt dass leider nicht, wie lautet der richtige Syntax?
-
Steck die Klassendefinition oder Strukturdefinition immer in ne Header-Datei und die Implementierung in ne Source-Datei.
Deine Funktionen vom ersten Programm ( also eingabe und ausgabe ) würde ich auch in
Header-Dateien( Funktionsdeklaration ) und Source-Dateien( Funktionsdefinition ) stecken.EDIT:
Bei deinem Taschenrechner gilt das natürlich auch, also für die Funktionen Addition und so weiter;-)Gruß freeG
-
yummiyummi schrieb:
cin>add.add->summand1; so klappt dass leider nicht, wie lautet der richtige Syntax?
cin>>add->add.summand1;Aber das ganze Design macht nicht einen Hauch von Sinn.
-
Ist nun auch erstmal um ein bisschen die Syntax zu üben, denn bin vor ner Stunde vom prodezualen C zu C++ umgestiegen.
-
yummuyummi schrieb:
Ist nun auch erstmal um ein bisschen die Syntax zu üben, denn bin vor ner Stunde vom prodezualen C zu C++ umgestiegen.
Aber wäre es gerade dann nicht sinnvoll, objektorientiertes Design zu üben? Die Syntax von C und C++ ist schließlich quasi identisch. Das Ansprechen von Structs, Arrays und Pointern (wonach du hier gefragt hast) gibt es schließlich auch in C genauso. Bloß, dass du in C++ äußerst selten Pointer und Arrays brauchst - du brauchst sie hier bloß wegen deines komischen Designs.
-
In der Klausur wird aber genau das drann kommen :S
cin>add.add->summand1;
kannst du mir denn helfen und sagen wie ich nun summand1 anspreche ?
-
Das hier ist auch noch nicht so schön, aber nur damit du mal siehst, wie viel Code du dir eigentlich sparen kannst:
#include <iostream> struct Result { long zahl1; long zahl2; }; Result liesZahlen(); long rechnen(Result res, char op); int main() { while (true) { int eingabe; do { std::cout << "--- Rechner ---" << std::endl; std::cout << "1. Add\n2. Sub\n3. Mul\n4. Div\n5. End\n\nEingabe: "; std::cin >> eingabe; } while (eingabe < 1 || eingabe > 5); switch (eingabe) { case 1: std::cout << rechnen(liesZahlen(), '+') << std::endl; break; case 2: std::cout << rechnen(liesZahlen(), '-') << std::endl; break; case 3: std::cout << rechnen(liesZahlen(), '*') << std::endl; break; case 4: std::cout << rechnen(liesZahlen(), '/') << std::endl; break; case 5: return 0; } } } Result liesZahlen() { Result res; std::cout << "\n--- Eingabe ---\n"; std::cout << "Zahl 1: "; std::cin >> res.zahl1; std::cout << "Zahl 2: "; std::cin >> res.zahl2; return res; } long rechnen(Result res, char op) { long r = res.zahl1; switch (op) { case '+': r += res.zahl2; break; case '-': r -= res.zahl2; break; case '*': r *= res.zahl2; break; case '/': r /= res.zahl2; break; } return r; }
-
ymmmmmymym schrieb:
In der Klausur wird aber genau das drann kommen :S
cin>add.add->summand1;
kannst du mir denn helfen und sagen wie ich nun summand1 anspreche ?
Du hast deine Antwort schon, guck mal weiter oben im Thread.
-
SeppJ:
leider sagt mein compiler dann:
main.cpp:81: error: invalid use of ‘struct rechner::add’