Warnung bei conversion operator erhalten (VS 2012)
-
Ich hab eine Klasse geschrieben die man frei von und zu einem enum umwandeln kann (automatisch).
Allerdings gehen bei einer umwandlung der Klasse zum enum Daten verloren. Das ist manchmal kein Problem und gewollt, manchmal aber schon. Gibt es eine Möglichkeit, das bei einer Umwandlung von Klasse=> enum ich den compiler dazu bringen kann, mir eine Warnung a la "possible loss of data" zu geben?
Bei einer kurzen google suche hab ich leider nur Themen gefunden, wie Leute eine Warnung loswerden wollen, nicht wie und ob man eine einfügen kann.
-
Mit Standardmitteln nicht.
Was soll das auch bringen? Guter Code ist ohne Warnungen.
Es empfiehlt sich die Konversion explizit zumachen, entweder in dem du den operator Enum() als explicit markierst (C++11), oder indem du eine Funktion as_enum o.ä erstellst.
Dann muss man einen Cast einfügen/die Funktion aufrufen und es kann nicht mehr versehentlich passieren.
-
Natürlich war es nicht geplant, die Warnung zu ignorieren, sondern sie dann beheben - wäre mir nur aus Konsistenzgründen lieber gewesen eine Warnung statt einem error zu erhalten. Casten muss ich dann sowieso. Wär halt schick gewesen.
Mein Ziel ist es ja eh, auf W4 ohne Warnungen zu kompilieren (und die Warnungen die noch drinnen sind geben auch ein echtes Problem an, an dem man noch arbeiten muss)
Da es ja spezifisch für VS2012 ist, würde mir auch ein nicht-standard weg reichen.
Vorerst hast du mich aber überzeugt den Weg mit dem error zu gehen.
Wär halt mir der Warnung irgendwie schick gewesen.
-
Nachtrag:
VS2012 kann das natürlich noch nicht *grml*.
Ach, doof, aber muss ich halt aufpassen und im Notfall debuggen. Soooo oft wird das ja nicht verwendet