我想解引用一个指针firsm->RootFolder->TotalItemsInView
,它在响应到达时取值。
ns1__MessageType* messgT = new ns1__MessageType();
std::vector<ns1__MessageType> v;
int count;
ews__FindItemResponseMessageType *firsm = new ews__FindItemResponseMessageType();
firsm->RootFolder = new ns1__FindItemParentType();
count = *firsm->RootFolder->TotalItemsInView;
for(int i=0; i < count; i++){
v.push_back(messgT[i]);
std::cout << "Hello" << std::endl;
}
TotalItemsInView
在ns1__FindItemParentType
类中定义。
class ns1__FindItemParentType
{ public:
int* TotalItemsInView ;
};
这里的TotalItemsInView
在响应SOAP请求时将具有整数值。我想用count中的整数值来运行for循环那么多次。
在编译中,我有Segmentation fault
可能是因为TotalItemsInView
的空值,但作为响应,它将具有值,所以我怎么能做到这一点。我是新手,任何帮助都很感激。谢谢你。
更新:My XML Received log:
<m:FindItemResponse xmlns:m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:t="http://schemas.microsoft.com/exchange/services/2006/types">
<m:ResponseMessages>
<m:FindItemResponseMessage ResponseClass="Success">
<m:ResponseCode>NoError</m:ResponseCode>
<m:RootFolder TotalItemsInView="2" IncludesLastItemInRange="true">
<t:Items>
<t:Message>
<t:ItemId Id="b30rTZMma5" ChangeKey="CQAAABAAAAAWl"/>
</t:Message>
<t:Message>
<t:ItemId Id="tNFsAAAIFUA" ChangeKey="CQAAAAAAWT"/>
</t:Message>
</t:Items>
</m:RootFolder>
</m:FindItemResponseMessage>
</m:ResponseMessages>
</m:FindItemResponse>
我在firsm->RootFolder = new ns1__FindItemParentType()
这里错了,我试图用空值初始化响应结构,这就是我在解除约束时遇到的问题。所以正确的方法是
ews__FindItemResponseMessageType *firsm = new ews__FindItemResponseMessageType();
firsm = findItemRes.ews__FindItemResponse->ResponseMessages->__union_ArrayOfResponseMessagesType->union_ArrayOfResponseMessagesType.FindItemResponseMessage;
count = *firsm->RootFolder->TotalItemsInView;