von void* zu IXMLDOMElementPtr konvertieren

lukasS

Erfahrenes Mitglied
Hallo,

ich habe eine Funktion, bei der ich einen void* als Übergabeparameter habe. Aus diesem Pointer hätte ich gerne ein MSXML2::IXMLDOMElementPtr-Objekt. Dies mache ich folgendermaßen:

Code:
MSXML2::IXMLDOMElementPtr* p_DOMElement = (MSXML2::IXMLDOMElementPtr*)p_Void;

Das funktioniert auch, nun würde ich gerne bspw. die Funktion GetnodeName() aufrufen, leider funktioniert das nicht, das p_DOMElement ein doublepointer ist, was muss ich machen, um ganz normal auf die Funktionen zugreifen zu können, sprich:

Code:
_bst_t bstr = p_DOMElement->GetnodeName();

Habe schon verschiedene Varianten ausprobiert, leider bisher ohne Erfolg. Was soll ich machen?

Danke schonmal!

Lukas

PS: Compiler ist egal, da diese DOM-Objekte von Microsoft kommen, arbeite aber mit VC++.
 
Das sollte normalerweise so gehen:
Code:
_bst_t bstr = (*p_DOMElement)->GetnodeName();
Ist das wirklich so beabsichtigt, daß Du da einen Zeiger auf einen Zeiger hast?
'MSXML2::IXMLDOMElementPtr' scheint ja schon ein Zeiger auf ein 'MSXML2::IXMLDOMElement' zu sein. Mit
Code:
MSXML2::IXMLDOMElementPtr* p_DOMElement
hast Du dann einen Zeiger auf 'MSXML2::IXMLDOMElementPtr', also einen Zeiger auf einen Zeiger.
Ist pVoid also wirklich ein Zeiger auf
'MSXML2::IXMLDOMElementPtr' oder ein Zeiger auf ein 'MSXML2::IXMLDOMElement'?
 
Danke für die Antwort, das

Code:
(*p_DOMElement)->GetnodeName();

habe ich gesucht, wie 1000 schon erzählt, die einfachsten Sachen sind die schwierigsten.

pVoid ist ein Zeiger auf MSXML2::IXMLDOMElementPtr, ist schon alles richtig.

Danke!

Lukas
 
Ohne das zu großartig zu testen, habe ich nun weitergearbeitet, bis ich herausfand, dass dort noch irgendwo ein Fehler ist. Kriege die Meldung "Unbehandelte Ausnahme", wenn ich

Code:
_bstr_t bstr = (*p_DOMElement)->GetnodeName();

sage. Man kann doch hier nicht viel falsch machen:

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

   return;
}

p_ElementStruct sowie p_Void sind nicht leer. Ich verstehe das nicht. :confused: :confused:

Gruß

Lukas
 
Wenn pVoid nicht NULL ist, dann kann es eigentlich nur noch sein, daß es nicht dahin zeigt, wo es soll. Wie es allerdings dazu kommt, kann ich Dir leider so nicht sagen.
 
Ich habs!
Kam wie es aussieht mit den Pointern durcheinander, hier der richtige code, falls es jemand interessiert.

Code:
   MSXML2::IXMLDOMElementPtr p_DomElement = (MSXML2::IXMLDOMElementPtr&)p_Void;
   _bstr_t bstr = p_DomElement->GetnodeName();

   return;
 
Zurück