memcpy auf Pointer to Member



  • Hallo,

    hat einer eine Ahnung, ob sowas gültiges C++ ist? Es geht hier nicht darum, ob das sinnvoll ist, sondern nur, ob es gültig ist:

    struct SomeClass
    {
       void f(){}
       //...
    };
    
    typedef void(SomeClass::*MemFunPtr)();
    
    //...
    
    SomeClass obj;
    
    MemFunPtr funPtr = &SomeClass::f;
    unsigned char image[sizeof(funPtr)];
    
    //ist sowas für Memberzeiger definiert?
    std::memcpy(image, &funPtr, sizeof(funPtr));
    

  • Mod

    Woran sollte es scheitern?



  • An meiner Unwissenheit. Deine Aussage impliziert, dass es geht. Das ist gut. 🙂



  • Ich tippe aber darauf, dass was auch immer du mit 'image' vor hast nicht definiert ist.



  • Standard-Freak schrieb:

    Ich tippe aber darauf, dass was auch immer du mit 'image' vor hast nicht definiert ist.

    Der Vergleich zweier Images wird wohl definiert sein.



  • Tachyon schrieb:

    Standard-Freak schrieb:

    Ich tippe aber darauf, dass was auch immer du mit 'image' vor hast nicht definiert ist.

    Der Vergleich zweier Images wird wohl definiert sein.

    Und wozu lädst du dazu Funktionszeiger in das image-Array? Was haben Funktionszeiger in einem Array das image heißt zu suchen?



  • Standard-Freak schrieb:

    Tachyon schrieb:

    Standard-Freak schrieb:

    Ich tippe aber darauf, dass was auch immer du mit 'image' vor hast nicht definiert ist.

    Der Vergleich zweier Images wird wohl definiert sein.

    Und wozu lädst du dazu Funktionszeiger in das image-Array? Was haben Funktionszeiger in einem Array das image heißt zu suchen?

    Zeiger haben darin nichts zu suchen. Wenn man es genau betrachtet ist das auch kein Zeiger, sondern die Repräsentation einer Adresse. Und Image heisst es, weil es ein Image ist.


Anmelden zum Antworten