Operatorenüberladung



  • Du kannst func nicht finden, indem Du nach << suchst?


  • Mod

    volkard schrieb:

    Du kannst func nicht finden, indem Du nach << suchst?

    Ups, eine Zeile habe ich nicht geändert, vorm posten. So soll das Beispiel aussehen:

    #include <iostream>
    
    class Foo
    {
      friend std::ostream& operator<<(std::ostream &out, const Foo&){ return out; }
    };
    
    class Bar
    {
      friend std::ostream& operator<<(std::ostream &out, const Bar&);
    };
    
    class FooBar
    {
      friend std::ostream& operator<<(std::ostream &out, const FooBar&);
    };
    
    std::ostream& operator<<(std::ostream &out, const Bar&){ return out; }
    std::ostream& operator<<(std::ostream &out, const FooBar&){ return out; }
    
    int main()
    {
      std::ostream& (*bar_ptr)(std::ostream &out, const Bar&)
        = operator<<;    // Geht
      std::ostream& (*foobar_ptr)(std::ostream &out, const FooBar&)
        = operator<<;    // Dito. Ist schließlich das gleiche, ich wollte bloß die
                         // Überladungsauflösung demonstrieren
      std::ostream& (*foo_ptr)(std::ostream &out, const Foo&)
        = operator<<;    // Kann Funktion nicht finden
    }
    

Anmelden zum Antworten