von void* zu IXMLDOMElementPtr konvertieren



  • Hallo,

    ist mein erster Beitrag 😃

    Also, ich habe ein Funktion, bei der ich als Parameter einen void-Pointer habe.

    void test(void* p_Void)
    {
       MSXML2::IXMLDOMElementPtr* p_DomElement = (MSXML2::IXMLDOMElementPtr*)p_Void;  
       _bstr_t bstr = (*p_DomElement)->GetnodeName();
    
       return;
    }
    

    In dieser Funktion erstelle ich mir daraus ein IXMLDOMElementPtr - Objekt. Nun will ich bspw. den Elementnamen auslesen. Leider kriege ich in der Zeile mit dem GetnodeName() die "Unbehandelte Ausnahme"-Meldung. Ich denke es liegt an der Konvertierung, sicher bin ich mir aber nicht. p_Void ist aber nicht leer, irgendwas muss also drin sein, aber evtl. zeigt der Zeiger wo anders hin. Das IXMLDOMElement ist auch richtig erstellt worden, zuvor überprüfe ich es auch, ob da überhaupt was drin ist.

    Was kann ich sonst noch machen? Kann mir bitte jemand dabei helfen?

    Danke schonmal!

    Gruß

    Lukas


  • Administrator

    Schonmal

    p_DomElement->GetnodeName();
    

    probiert?

    Oder wenn es unbedingt so lassen willst, wie du es gemacht hast:

    (*p_DomElement).GetnodeName();
    

    Das Sternchen vor dem Zeiger macht ihn zu einem Objekt auf welches der Zeiger zeigt. Deshalb muss man wieder den Punkt verwenden. Oder du machst einfach diesen Unsinn erst gar nicht und rufst vom Zeiger aus die Funktion auf mit dem Pfeil.

    Grüssli



  • Danke für die Antwort. Es ist ein double-pointer, daher die Klammer, anders geht es nicht.

    Das IXMLDOMElementPtr ist schon ein Pointer, das void* ist ebenfalls ein Pointer.

    Gruß

    Lukas


Anmelden zum Antworten