Warum brauchst du das? Willst du sie alle loswerden?
C-Style Casts für grundlegende Typen wie (double)
sind sicher und sieht viel besser als static_cast<double>()
. Ich persönlich bevorzuge diesen Stil.
Im Falle von polymorphen Klassen ist das Problem der C-Style-Modelle imho stark übertrieben. Es kann nur ein Problem sein, wenn Sie Mehrfachvererbung verwenden und Cros Casting durchführen müssen. Standardmäßig werden C-artige Umwandlungen dort nicht funktionieren. Aber in den meisten Fällen funktioniert ()
genau wie static_cast<>()
und ich würde keine Zeit verschwenden, sie zu ersetzen. Wie dem auch sei, für polymorphe Typen verwende ich C++ - Style-Casts, wenn ich neuen Code schreibe oder etwas ändere.
UPDATE:
Jungs, es scheint, dass ich meine Meinung zum Ausdruck nicht so klar. Ja, ich kenne die Theorie: C++ - Besetzung ist gut, C-Besetzung ist böse. Diese Regel (und die meisten anderen) wird benötigt, um Neulinge aus C++ zu retten. Aber es bedeutet nicht, dass Sie immer folgen müssen.
Mein Punkt ist, dass C-Style-Casts nicht so schrecklich sind. Wenn Sie eine Funktion wie
int convertFooToBar(double i_foo)
schreiben, gibt es keine Gründe, C++ - Casts bei der Umsetzung. Sie sind nicht sicherer als (int)
, sehen aber chaotisch aus. Casting ist in diesem Fall nicht schwierig. Es ist überhaupt nichts Schlechtes oder Schwieriges beim Casting: Manchmal sind Casts natürlich.
Über die Suche: Ich kann mich nicht daran erinnern, dass ich in den letzten 10 Jahren nach einer Cast-Anweisung gesucht habe, obwohl ich täglich mehrere Millionen Zeilen älteren C++ - Codes aufbewahre. Ich erinnere mich nicht einmal an ein ernsthaftes Problem wegen falschem Casting.
Ursprüngliche Frage ist über das Ersetzen bereits geschriebener C-artiger Modelle. Also, meine Antwort lautet:
Ja, C++ - Style-Casts sind besser und sicherer als C-Style-Einsen. Aber es bedeutet nicht, dass Sie für alte in Ihrem Code suchen und versuchen müssen, loszuwerden von ihnen allen. Eigentlich ist es kein wirkliches Problem. Verschwenden Sie nicht Ihre Zeit.Sie können es für das Suchen und Löschen von veraltetem Code ausgeben. Es wäre nützlicher für Ihre Codebasis.
Aber ich bin mit Visual C++ (MFC) :( –
Vielleicht möchten Sie die Visual C++ Compiler-Schalter zu überprüfen, es zu sehen, ob diese Warnung ein auszuschalten ist oder wenn sie eine, die Sie bestimmte Sperren angeben Warnungen Wenn es einen solchen Schalter nicht gibt, können Sie die Warnung mit einem Pragma in den Dateien deaktivieren, die das Vergehen verursachen. Ich habe mit mit Visual C++ verwandt, um einige Warnung über die Länge der STL-Namen bei dem Kompilieren zu deaktivieren – Glenn