我在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