wie gebraucht man eine enum class ?
-
Schau es dir nochmals an.
-
@manni66
jupp, hast recht, hab mich verguckt.
-
@Swordfish Also ein Stream-Insertion-Operator sollte mMn. nie crashen, selbst wenn er "ungültigen" Input bekommt.
-
@hustbaer Ne, sollte er nicht. Höchstens
failbit
setzen.
-
@Swordfish
Na dann istassert(index < sizeof_array(color_names));
return out << color_names[index];
vielleicht nicht optimal
-
@hustbaer Ich habe mich schon gefragt was Du meinst. Ob jetzt aber
std::ostream& operator<<(std::ostream &out, E_COLORS const &color) { std::size_t index { static_cast<std::underlying_type_t<std::decay_t<decltype(color)>>>(color) }; if (index < sizeof_array(color_names)) return out << color_names[index]; return out << "undefined"; }
besser ist?
-
@Swordfish
Wie wäre es mitstd::ostream& operator<<(std::ostream &out, E_COLORS const &color) { std::size_t index { static_cast<std::underlying_type_t<std::decay_t<decltype(color)>>>(color) }; if (index < sizeof_array(color_names)) return out << color_names[index]; out.setstate(std::ostream::failbit); return out; }
-
@Schlangenmensch Auch schön ¯\_(ツ)_/¯
-
std::ostream& operator<<(std::ostream &out, E_COLORS const &color) { std::size_t index { static_cast<std::underlying_type_t<std::decay_t<decltype(color)>>>(color) }; if (index < sizeof_array(color_names)) return out << color_names[index]; return out << "#" << index; }
-
@hustbaer Doppelplusgut.