Function pointer assignment



  • Hallo zusammen,

    wir sitzen hier gerade über einem Problem und bräuchten Hilfe von Leuten die sich im Standard auskennen (wir finden leider keine Stelle die Regeln zu unserem Problem beschreibt.)

    Im folgenden sei C_Stream ein gegebener Typ

    C_Stream& Hex (C_Stream& stream)
    {
       // ...
    }
    
    inline operator << (const C_Stream& out, (CStream& (*fp)(C_Stream& stream)))
    {
       // ...
    }
    
    // Aufruf
    streamObject << Hex; // Brauche ich hier laut Standard den Address Operator?
    

    Ist es compiler abhängig, dass der Aufruf des Operators mit der Funktion Hex ohne Address Operator funktioniert?

    Was sagt der Standard dazu, bzw. nach welchen Stichworten muss ich suchen? Denn unter pointer to function hab ich nichts gefunden (kann sein dass ich grad den Wald vor lauter Bäumen nicht sehe.)

    Dieses Tutorial deutet darauf hin, dass man den Address operator verwenden sollte.

    Danke für euere Mühen...

    Gruß
    Tobi



  • Standardparagraphen kann ich dir keinen liefern.

    Aber Hex und &Hex sind äquivalent. Das & braucht man nur bei Memberfunktionen, weswegen es oft Sinn macht das & immer zu schreiben.

    Beweisen kann ich diese Aussage aber leider nicht.


  • Mod

    Es existiert eine (lvalue-)function-to-pointer Konvertierung (4.3.), die hier anzuwenden ist, falls kein Adressoperator benutzt wird. Wenn man fan von Sternchen ist, kann man auch

    streamObject << ***********************************Hex;
    

    schreiben.



  • Vielen Dank euch beiden... 👍 Eure Antworten helfen uns weiter. Damit (vor allem mit der Nummer des Paragraphen) kann ich für eine Misra Deviation argumentieren...


Log in to reply