c ++: Verwenden Sie type safety, um Typen von zwei int-Argumenten zu unterscheiden

8

Ich habe verschiedene Funktionen mit zwei int-Argumenten (ich schreibe sowohl die Funktionen als auch den aufrufenden Code selbst). Ich habe Angst, die Reihenfolge der Argumente in einigen Aufrufen zu verwechseln.

Wie kann ich Typsicherheit verwenden, um Compiler warnen mich oder Fehler mich, wenn ich eine Funktion mit falscher Folge von Argumenten aufrufen (alle Argumente sind int)?

Ich habe versucht, typedefs: Typedef keine Compiler-Warnungen oder Fehler auslösen:

%Vor%     
Andrei 12.01.2011, 19:16
quelle

3 Antworten

12

Sie müssen Wrapper-Klassen erstellen. Nehmen wir an, Sie haben zwei verschiedene Einheiten (zB Sekunden und Minuten), die beide als Ints dargestellt werden. Sie benötigen etwas wie das Folgende, um vollständig typsicher zu sein:

%Vor%

und eine ähnliche Klasse für Sekunden. Der explizite Konstruktor verhindert, dass Sie versehentlich int als Minute verwenden, aber der Konvertierungsoperator erlaubt Ihnen, Minute überall dort zu verwenden, wo Sie eine int benötigen.

    
Daniel Gallagher 12.01.2011, 19:24
quelle
4

typedef erstellt Typaliase. Wie Sie festgestellt haben, gibt es dort keine Typsicherheit.

Eine Möglichkeit, je nachdem, was Sie erreichen möchten, ist enum . Das ist auch nicht ganz sicher, aber es ist näher. Sie können z. B. kein int an einen enum-Parameter übergeben, ohne ihn umzuwandeln.

    
Fred Larson 12.01.2011 19:21
quelle
-5

Erhalte eine Post-it-Notiz. Schreibe in großen Buchstaben darauf: "X ERSTEN! DANN Y!" Kleben Sie es auf Ihren Computerbildschirm. Ich weiß ehrlich nicht, was ich sonst noch beraten soll. Die Verwendung von Wrapper-Klassen ist sicherlich übertrieben, wenn das Problem mit einem Post-It- und einem Magic-Marker gelöst werden kann.

    
TonyK 12.01.2011 22:40
quelle

Tags und Links