Ich weiß, dass Sie C++ - Schlüsselwort 'explizit' für Konstruktoren von Klassen verwenden können, um eine automatische Konvertierung von Typ zu verhindern. Können Sie denselben Befehl verwenden, um die Konvertierung von Parametern für eine Klassenmethode zu verhindern?Können Sie das Schlüsselwort explizit verwenden, um die automatische Konvertierung von Methodenparametern zu verhindern?
Ich habe zwei Klassenmitglieder, eine, die eine Bool als ein Param, die andere ein unsigned Int. Als ich die Funktion mit einem int aufgerufen habe, hat der Compiler den Parameter in bool konvertiert und die falsche Methode aufgerufen. Ich weiß, irgendwann werde ich den Bool ersetzen, aber vorerst will ich die anderen Routinen nicht brechen, da diese neue Routine entwickelt wird.
Fragte sich die gleiche Sache und denke, das wäre nützliche Syntax für bestimmte freie Funktionen. Normalerweise möchte ich, dass der Verweis auf eine abgeleitete Klasse implizit die Basisklasse liefert, außer in den Fällen, in denen ein unerwünschtes Slicing auftreten könnte, wie bei einer swap() - Funktion. Tausch (explizite Foo & lhs, explizite Foo & rhs) wäre tröstlich. –