Das Problem ist folgendes: Ich möchte Daten aus einer Datei in eine Variable einlesen, deren Typ ein enum ist.
Ich bekomme folgende Fehlermeldung:
error C2679: Binärer Operator '>>': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operanden vom Typ 'defaultEnum akzeptiert (oder keine geeignete Konvertierung möglich)
Sofern ich versuche, vom enum zu int zu casten, ändert sich die Fehlermeldung nur insofern, als dass statt 'defaultEnum', 'int' nicht aktzeptiert wird...
ifstream >> enum
Re: ifstream >> enum
Du musst den operator>> auch für dein enum überladen:
Code: Alles auswählen
#include <ostream>
#include <istream>
enum farbe {rot, blau, gelb};
typedef unsigned long externer_farbe_typ;
template <typename char_t, typename traits_t>
std::basic_ostream<char_t, traits_t>& operator<< (std::basic_ostream<char_t, traits_t>& os, farbe const& f)
{
return os << static_cast<externer_farbe_typ>(f);
}
template <typename char_t, typename traits_t>
std::basic_istream<char_t, traits_t>& operator>> (std::basic_istream<char_t, traits_t>& is, farbe& f)
{
externer_farbe_typ temp;
is >> temp;
f = static_cast<farbe>(temp);
return is;
}
Re: ifstream >> enum
Wenn du zu obigem keine Lust hast, kannst du auch Folgendes machen:
Du musst aber drauf aufpassen, dass das enum die gleiche Größe wie int hat.
Ciao
Code: Alles auswählen
in >> (int&)enumvar;
Ciao
Re: ifstream >> enum
Danke für eure Antworten.