Funktion soll nichts zurückgeben
-
Hallo zusammen,
ich habe diese Funktion:int Divide(xVal, yVal) { if(xVal <= 0 || yVal <= 0) { cout << "Ach hör doch uf, Du ;)"; //return; geht nicht } return xVal / yVal; }Falls yVal == 0 ist, soll die Funktion einfach abgebrochen werden. Wie mache ich das? Ich kann ja nicht einfach return schreiben.
Danke schön
-
Werfe eine Exception! Hier ist ein Beispiel, das genau dazu passt. Wenn du keine Exceptions kennst, einfach das gesamte Kapitel von vorne lesen.

-
kannst ja den wert 0xFFFFF; als fehler zurückgeben!
-
oder 0xD000005;
oder was auchimmer...
-
Ok danke! Das werde ich machen.
-
vorschlag 2 schrieb:
oder 0xD000005;
oder was auchimmer......oder 0xAFFEAFFE, oder 0xDEADBEEF, oder...
-
Oder arbeite mit Double, dann klappt es auch mit dem durch Null teilen.

-
Fellhuhn schrieb:
Oder arbeite mit Double, dann klappt es auch mit dem durch Null teilen.

Nicht gut...
#include <iostream> #include <exception> int Divide(xVal, yVal) { // Nur Division durch 0 ist nicht definiert. // => Was xVal ist, interessiert uns nicht. // => Auch die Division durch eine negative Zahl ist okay. // Folglich muss nur yVal == 0 abgefragt werden! if (yVal == 0) { throw std::exception("division by zero"); } return xVal / yVal; } int main() { try { divide(10, 0); } catch (std::exception& e) { std::cerr << e.what() << std::endl; } }
-
6724234234 schrieb:
#include <exception> throw std::exception("division by zero");Seit wann hat std::exception einen Konstruktor, der ein const char* - kompatibles Argument akzeptiert?
Meintest du ggf. logic_error oder runtime_error aus <stdexcept>? An der Stelle wäre imo logic_error, genauer gesagt der davon abgeleitete domain_error die richtige Wahl, da der Benutzer vor dem Aufrufen von Divide die Division durch Null abfangen sollte.
-
pumuckl schrieb:
6724234234 schrieb:
#include <exception> throw std::exception("division by zero");Seit wann hat std::exception einen Konstruktor, der ein const char* - kompatibles Argument akzeptiert?
Meintest du ggf. logic_error oder runtime_error aus <stdexcept>? An der Stelle wäre imo logic_error die richtige Wahl, da der Benutzer vor dem Aufrufen von Divide die Division durch Null abfangen sollte.Du hast natürlich Recht, in meiner Funktion fehlen sogar die Typangaben für die Parameter. Es war ein pseudoartiger C++ Code... Bzw. ist es zu einem geworden

Ich wollte nur zeigen, wie einfach, es aussehen könnte, damit der OP nicht auf dumme Gedanken kommt
