Zeiger auf Operator speichern



  • Hallo...
    Ich möchte einen Pointer auf einen Operator speichern... z.B: Addition
    Dabei dachte ich mir das sollte doch so ähnlich gehen wie bei einem Funktionszeiger...Also:

    void (*funktion)(int parameter)
    

    Nun weiß ich aber nicht so genau wie das syntaktisch aussehen muss und was ich als Parameter nehme...
    Wäre schön wenn mir da jemand auf die Spünge helfen könnte.



  • Ich schätze mal du willst nen pointer auf ne member function

    Etwa so:

    #include <iostream>
    
    class Foo
    {
    public:
            Foo() : i(0){}
            void operator+(int i){
                    this->i += i;
            }
            int i;
    };
    
    typedef void (Foo::*bar)(int parameter);
    
    int main()
    {
            bar func = &Foo::operator+;
            Foo foo;
            (foo.*func)(2);
            (foo.*func)(3);
            std::cout << foo.i << std::endl;
            return 0;
    }
    

    Gruß,
    CSpille



  • So gehts doch auch:

    #include <iostream>
    #include <vector>
    
    class foo
    {
    
    };
    
    const std::ostream &operator<<(const std::ostream &ostr, const foo &f)
    {
        return ostr;
    }
    
    int main()
    {
        const std::ostream &(*p)(const std::ostream &, const foo &);
    
        p = operator<<;
    
        foo f;
    
        p(std::cout, f);
    
        return 0;
    }
    


  • Wulff schrieb:

    So gehts doch auch:

    Hast du absolut recht,
    allerdings bin ich von einer member function ausgegangen, da erst sonst
    wahrscheinlich zwei Parameter angegeben hätte...



  • Danke, damit konnte ich was anfangen!



  • CSpille schrieb:

    Wulff schrieb:

    So gehts doch auch:

    Hast du absolut recht,
    allerdings bin ich von einer member function ausgegangen, da erst sonst
    wahrscheinlich zwei Parameter angegeben hätte...

    Das "auch" war nicht auf deinen Post bezogen, sondern ich wollte damit betonen, dass es so geht wie er es beschrieben hat (im Sinne von "ja, so wie du es beschreibst, geht es doch auch").


Anmelden zum Antworten