klassenbenennung
-
hola leute,
habe eine sehr kleine klasse die ich haeufig brauche und ich nicht weiß wie ich sie sinnvoll bennenen soll:
class ???? { public: operator bool(void) noexcept { if(m_var == true) return true; m_var = true; return false; } private: bool m_var = false; };
bei der ersten ueberpruefung gibt sie false zurueck, danach immer true.
wie koennte man sowas benennen ?Meep Meep
-
OnceTrue bzw. TrueOnce
Wobei bei sowas der Kontext das viel spannendere ist.
-
OneShot
Dazu müsstest du allerdings den Returnwert flippen (1x true und ab dann immer false).Und mach den op bool explicit.
-
Die Implementierung ist sehr umständlich. Das geht einfacher mit einer Hilfsfunktion aus C++14:
namespace std { template <class T, class U> T exchange(T &target, U &&source) { T result = std::move(target); target = std::forward<U>(source); return result; } } ... explicit operator bool() noexcept { return std::exchange(m_var, true); }