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);
    }
    

Anmelden zum Antworten