我在C++類名爲InformationElement它定義瞭如下的信息單元的幀結構:選擇corect導出基於ID值基於類
< - 元素ID-> < - 元素長度 - > < -Variable淨荷 - >
- 元素ID是1字節。
- 元素長度是1個字節長。它定義了有效載荷部分的長度。
- 該類包含用於對內容進行序列化和反序列化的虛擬函數+定義ElementID的類型。
從這類不同派生類繼承例如:
- 類能力
- 類操作。
- class TimingParameters。
每個派生類都有唯一的元素ID和不同的有效負載。
不同的信息元素(IEs)將被封裝在一個更大的框架中。這個更大的框架包含了封裝在其中的信息元素的數量。
< IEs-的-Number> < --IE 1 - > < - IE 2 - > < - IE 3 - > ......
從發射機點查看序列化這些信息沒有問題。然而,在接收端,接收端必須提取Element ID,並根據該值,接收端選擇正確的派生類來處理淨荷部分,即處理反序列化操作。在接收端這樣的傳統方法是建立一個大的開關情況如下:
InformationElement *element;
switch (elementID)
{
case 1:
element = new Capabilties;
case 2:
element = new Operation;
case 3:
element = new TimingParameters;
}
但是,如果我有100個元素,這將是太多與比較,也不會擴大該許多。
所以我的問題是有沒有什麼聰明的方式來做到這一點在c + +比爲每個獨立的元素ID插入一個獨特的情況?
有什麼不對switch語句?我更喜歡我認爲的任何其他解決方案。 – Barry
您需要表達每個標識符與相應類型*之間的關聯*。每種類型的解決方案是否需要一些關聯以適合您的賬單? – Quentin
@Quentin,你有什麼建議? – IoT