Memberfunktionen / Methoden



  • Wenn man nach diesem Artikel geht, sollte folgendes doch erlaubt sein, oder?

    #include <iostream>
    
    struct test
    {
            void sayHello(const std::string& str) { std::cout << "Hello " << str << '!' << std::endl; }
    };
    
    int main()
    {
            void(*sayHello)(test*, const std::string&) = reinterpret_cast<void(*)(test*, const std::string&)>(&test::sayHello);
            test t;
            sayHello(&t, "Hugo");
    }
    
    prog.cpp: In function 'int main()':
    prog.cpp:10:122: warning: converting from 'void (test::*)(const std::string&)' to 'void (*)(test*, const std::string&)'
    


  • Nur weil man sich Memberfunktionen wie freie Funktionen mit zusätzlichem this -Parameter vorstellen kann, muss zwischen Memberfunktionszeigern und freien Funktionszeigern noch keine Konvertierung bestehen.

    P.S. Danke, dass du den Code gleich hier eingefügt hast statt auf ideone 🙂


Anmelden zum Antworten