2009-06-01 78 views

回答

1

當StructSeriliser創建它被傳遞的對象的實例是對應於,它爲每個字段創建串行器:

StructSerialiser (T* data) 
    : SerialiserData (data) 
{ 
    if (fieldBinderList_.empty()) 
     Serialiser<T>::initialise(); 

    typedef FieldBinderList::const_iterator Iter; 
    for (Iter iter = fieldBinderList_.begin() 
     ; iter != fieldBinderList_.end() 
     ; ++iter 
     ) 
    { 
     serialisers_.push_back 
      (SerialiserEntry 
       ((*iter)->tags_ 
       , (*iter)->createSerialiser (*data) 
       ) 
      ); 
    } 
} 

然後,當串行器被傳遞將其傳遞到下一個開始元素適當的字段串行器。

說實話,最初的代碼片段並不打算在它自己的權利中使用。該類的完整代碼超過500行,並且還有用於基元,可選項和選擇的串行器。