C++ 通过不透明指针获取xml数据

C++ 通过不透明指针获取xml数据,c++,xml,opaque-pointers,C++,Xml,Opaque Pointers,我在使用供应商的api检索消息的xml部分时遇到问题。作为工作原理的示例: getDestination(无效*消息、无效*目的地、无效*大小) 产生:收到的消息。(目的地:某个目的地) 要检索消息的XML部分,它需要一个getXmlPtr函数(void*msg,void**XML\u ptr,void*XML\u length) 所以问题是,我如何声明和传递ptr,以使我能够获取xml信息(供应商的文档非常糟糕)。它主要说参数应该是指向应用程序指针的指针,以在返回时填充消息xml数据指针。程序

我在使用供应商的api检索消息的xml部分时遇到问题。作为工作原理的示例: getDestination(无效*消息、无效*目的地、无效*大小)

产生:收到的消息。(目的地:某个目的地)

要检索消息的XML部分,它需要一个getXmlPtr函数(void*msg,void**XML\u ptr,void*XML\u length)


所以问题是,我如何声明和传递ptr,以使我能够获取xml信息(供应商的文档非常糟糕)。它主要说参数应该是指向应用程序指针的指针,以在返回时填充消息xml数据指针。程序员可以将返回的void指针强制转换为适合应用程序的任何引用

那么,您将指向void的指针声明为指向void的指针:
void*ptr

void**
表示通过引用传递指针;据推测,该函数将对其进行修改,以指向存储XML数据的位置。因此,您需要的是指针,而不是数组:

void * ptr;
int size;
getXMLPtr(msg_p, &ptr, &size);

我猜演员阵容是由printf语句完成的?我想这就是我以前那样做的时候做错的地方。谢谢@Buraan这真的取决于你想用它做什么,但是是的。您也可以对调用进行强制转换,但需要兼容的类型(指向数组的指针和指向指针的指针是两种不同的类型)。
char**
不会隐式转换为
void**
@Let\u Me\u Be:you's right;我在复制代码时忘了动脑。
char ptr[10000];
int size;
getXmlPtr(msg_p, (void**)&ptr, &size);
printf("Received message. (XML: %s).\n", ptr);
void * ptr;
int size;
getXMLPtr(msg_p, &ptr, &size);