Jeg har store problemer med at benytte try, throw og catch. Vi skal lave en vekselmaskine. En underopgave er at lave en tom struct i headeren, som hedder "notEnoughMoney" som skal kastes hvis maskinen løber tør for penge. Jeg har inkluderet min cpp fil med funktionerne. Al hjælp vil blive modtaget med kyshånd.
#include "Automat.h" #include <iostream>
void Automat::veksel(seddelType s) { try { if (s == FEMTI) { udRegn(50); } else if (s == EN_HUND) { udRegn(100); } else if (s == TO_HUND) { udRegn(200); } else if (s == FEM_HUND) { udRegn(500); } else if (s == INVALID) { cout << "Sedlen kan ikke accepteres.\n"; } } catch (int h[]) { if (h[0] == 0 && h[1] == 0) {
} else { cout << "\nDer er blevet vekslet til:\n" << h[0] << " antal tyvere\n" << h[1] << " antal tiere." << endl; } };
} void Automat::udRegn(int amount) {
int x,y,i; int z[2]; x = 0; y = 0; i=1; while (i > 0) { if (amount == 0) { i = 0; } else if (amount>10 && coins.tyvere>0) //korrekt og-funktion? { amount -= 20; coins.tyvere -= 1; x += 1; } else if (amount==10 || coins.tyvere==0) //korrekt eller-funktion? { amount -= 10; coins.tiere -= 1; y += 1; } /* else if (coins.tiere==0 && coins.tyvere==0 || coins.tiere==0 && amount==10) { throw notEnoughMoney ("Der er ikke moenter nok i automaten til at veksle\n"); i = 0; } */
Men når det er en struct jeg thrower, hvordan catcher jeg sådan en? Endvidere når det er påkrævet det skal være en tom struct. Hvordan ved brugeren så at der er sket en exception?
"Rediger udRegn funktionen og kast (throw) en struct notEnoughMoney uden medlemmer, som er privat i Automat-klassen. Fang (catch) denne exception i veksel()-funktionen og behandl den fornuftigt."
Dette er taget fra opgave teksten til mit spørgsmål. Så vidt jeg har forstået skal der ikke oprettes noget via notEnoughMoney hvor du opretter fb via Foobar. Hvordan ser du opgaven løst med efter du har læst opgaveteksten?
Jeg er godt klar over det er en struct. Jeg kan bare ikke se hvad du mener. Det er sikkert simpelt men jeg har aldrig arbejdet med exceptions før og sidder fast siden igår morges. Er derfor vildt frustreret over det ikke virker. Hvis du har tid til at forklare det lidt dybere hvordan du ser opgaven løst udfra den tidligere nævnt opgavetekst vil jeg blive glad.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.