Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  enum class Problem  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
Enumerator
Unregistrierter




Beitrag Enumerator Unregistrierter 17:14:26 13.05.2012   Titel:   enum class Problem            Zitieren

Hi, ich habe meinen ganzen enums jetzt zu enum classes abgeändert und natürlich läuft das ganze jetzt nicht mehr. Z.B. folgender Code:

Code:
enum class Color : int
{
    Black = 0,
    ...
    White = 15
};


Code:
void MyFunction(Color color)
{
    if ((color & ~Color::White) != Color::Black)
    ...


IntelliSense: expression must have integral or unscoped enum type
error C2678: binary '~' : no operator found which takes a left-hand operand of type 'Color' (or there is no acceptable conversion)

Wie kann ich dieses Problem am besten lösen?
314159265358979
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
Beitrag 314159265358979 Mitglied 17:31:48 13.05.2012   Titel:              Zitieren

Indem du die Operatoren für dein enum definierst.
Unregistrierter





Beitrag Unregistrierter 19:35:47 13.05.2012   Titel:              Zitieren

314159265358979 schrieb:
Indem du die Operatoren für dein enum definierst.


Er könnte aber auch explizit casten, wenn er sowieso schon auf Ganzzahl-basis damit rechnen will...
314159265358979
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
Beitrag 314159265358979 Mitglied 19:40:30 13.05.2012   Titel:              Zitieren

Jo klar, mal eben im Code an jeder Stelle refactoren...
Unregistrierter





Beitrag Unregistrierter 21:15:44 13.05.2012   Titel:              Zitieren

314159265358979 schrieb:
Jo klar, mal eben im Code an jeder Stelle refactoren...

Dann stellt sich die Frage, wozu dieser ganze "streng-typisiertes enum" quatsch (Edit) hier gut ist, wenn es eh nur Ärger bringt...


Zuletzt bearbeitet von Unregistrierter am 21:24:43 13.05.2012, insgesamt 1-mal bearbeitet
314159265358979
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
Beitrag 314159265358979 Mitglied 21:19:05 13.05.2012   Titel:              Zitieren

Denk doch mal nach du Depp :mad: :mad: :mad:
Enumerator2
Unregistrierter




Beitrag Enumerator2 Unregistrierter 21:21:46 13.05.2012   Titel:              Zitieren

314159265358979 schrieb:
Jo klar, mal eben im Code an jeder Stelle refactoren...
Für jedes popelige enum die ganzen Operatoren zu definieren ist aber auch nicht besser.
Unregistrierter





Beitrag Unregistrierter 21:23:31 13.05.2012   Titel:              Zitieren

314159265358979 schrieb:
Denk doch mal nach du Depp :mad: :mad: :mad:


Hab ich ja. Ich hab nachgedacht, was herausgefunden und es dann geschrieben ;)

Es ist nicht überall besser.
314159265358979
Mitglied

Benutzerprofil
Anmeldungsdatum: 09.03.2010
Beiträge: 4658
Beitrag 314159265358979 Mitglied 22:02:15 13.05.2012   Titel:              Zitieren

Enumerator2 schrieb:
Für jedes popelige enum die ganzen Operatoren zu definieren ist aber auch nicht besser.

Ist ja auch nicht so, als ob sich das durch ein simples Makro vereinfachen liese.

Hacker schrieb:
Hab ich ja. Ich hab nachgedacht, was herausgefunden und es dann geschrieben ;)

Es ist nicht überall besser.

Niemad hat gesagt, dass man jetzt jedes enum durch ein enum class ersetzen soll. DA liegt der Fehler.
Unregistrierter





Beitrag Unregistrierter 22:50:17 13.05.2012   Titel:              Zitieren

314159265358979 schrieb:

Niemad hat gesagt, dass man jetzt jedes enum durch ein enum class ersetzen soll. DA liegt der Fehler.


Genau.
@TE: Wieso hast du überhaupt deine ganzen Enumerationen zu streng-typisierten geändert?
c++.de :: C++ (auch C++0x und C++11) ::  enum class Problem  
Gehen Sie zu Seite 1, 2, 3, 4  Weiter
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.