"Statische" Klasse als Operator-Parameter



  • Hallo,

    ich hatte den Fall bisher noch nie und bin daher etwas ratlos, ob es überhaupt möglich ist:

    Ich habe eine Klasse mit nur statischen Membern. Für diese würde ich gerne einen Operator überladen.

    Also ungefähr sowas:

    class Statisch 
    {
    private:
         static std::stack<int> int_stack;
         friend operator << (Statisch, int&);          
    };
    
    std::stack<int> Statisch::inst_stack;
    
    static inline void operator << (Statisch, int& i) {
         Statisch::int_stack.push(i);
    }
    

    Funktioniert halt nur nicht 😉



  • Wie soll dieser Operator denn benutzt werden?



  • MFK schrieb:

    Wie soll dieser Operator denn benutzt werden?

    Statisch << 77;



  • Funktioniert halt nur nicht 😉

    Beeindruckende Fehlerbeschreibung. Lies dir mal bitte den Thread "Du brauchst Hilfe?" durch und frag dann nochmal.



  • Das muss dann doch echt kein operator sein...
    Operatoren machen nur Sinn, wenn du auch tatsächlich funktionierende (also keine Dummy-"Ich arbeite nur auf static private-Membern") Objekte hast.
    Bei dir reicht vollkommen einefreie Funktion, bzw. weils ja doch eng mit der Klasse verknüpft ist und du dir so ein "friend" sparst, gleich als statische Funktion:

    class Statisch 
    {
    private:
         static std::stack<int> int_stack;
    public:
         static void haenge_an(int);          
    };
    
    std::stack<int> Statisch::inst_stack;
    
    void Statisch::haenge_an(int i) {
         Statisch::int_stack.push(i);
    };
    


  • Natürlich muss das kein Operator sein. Ich wollte auch einfach nur wissen, ob es prinzipiell möglich ist hier einen Operator zu überladen.



  • void operator << (Statisch, int& i)
    

    1.Argument ist ein Statisch Objekt. Also brauchst für diesen Operator ein Statisch Objekt.

    Statisch() << 42;
    

    Viel Sinn macht das allerding nicht.


Anmelden zum Antworten