2015-09-21 5 views
0

Я хочу разыменовать указатель firsm->RootFolder->TotalItemsInView, который принимает значение, когда ответ получен.Как указатель разыменования, когда значение pointee присвоено в ответ

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, но в ответ он будет иметь значение, поэтому как я могу это сделать. Я новичок в указателях, любая помощь оценивается. Спасибо.

UPDATE: Мой XML Поступил в журнале:

<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> 
+0

И как 'ns1__FindItemParentType' конструктор выглядит? – SingerOfTheFall

+0

@SingerOfTheFall нет конструктора в классе, но есть некоторые комментарии, то есть ' класса ns1__FindItemParentType операции: soap_new_ns1__FindItemParentType (мыло *) выделяют soap_new_ns1__FindItemParentType (мыло *, INT NUM) выделяет массив soap_new_req_ns1__FindItemParentType (мыло *, ...) распределяющие, установите необходимые члены soap_new_set_ns1__FindItemParentType (мыло *, ...) выделить, установить все открытые члены INT soap_read_ns1__FindItemParentType (мыло *, ns1__FindItemParentType *) десериализации из потока Int soap_write_ns1__FindItemParentType (мыло, ns1__FindItemParentType *) сериализовать к stream' – Tushar

+0

@SingerOfTheFall Я не знаю за кулисами, как работает SOAP, но надеюсь, что комментарии помогут вам понять идею а. – Tushar

ответ

0

Я был неправ здесь firsm->RootFolder = new ns1__FindItemParentType(), где я пытался инициализировать структуру ответа с пустым значением, это путь я имею проблему в derefrencing его. Так Чет правильный способ сделать это

ews__FindItemResponseMessageType *firsm = new ews__FindItemResponseMessageType(); 
firsm = findItemRes.ews__FindItemResponse->ResponseMessages->__union_ArrayOfResponseMessagesType->union_ArrayOfResponseMessagesType.FindItemResponseMessage; 
count = *firsm->RootFolder->TotalItemsInView; 

 Смежные вопросы

  • Нет связанных вопросов^_^