有没有一种方法可以弄清对象的类型(以字节数组形式,C ++?

问题描述 投票:0回答:1

我一直在为客户端服务器应用程序使用boost :: asio,我正在以消息的形式来回发送打包的结构,服务器需要确定传递给它的请求结构的类型,并相应地确定对其的响应。现在,每个结构都有一个唯一的TemplateId,它存储在第二级结构中:MessageHeader,有一种方法可以从接收到的字节数组(char *)中知道结构的类型。

示例结构:

typedef struct { 
    MessageHeaderInComp MessageHeaderIn;
    RequestHeaderComp RequestHeader;
    uint32_t Username;
    char Pad4[LEN_PAD4];
} __attribute__((packed)) UserLogoutRequest;



typedef struct { 
    uint32_t BodyLen;
    uint16_t TemplateID;  //this is unique
    char NetworkMsgID[LEN_NETWORKMSGID];
    char Pad2[LEN_PAD2];
} __attribute__((packed)) MessageHeaderInComp; 

现在我正在使用:

const UserLogoutRequest*obj = reinterpret_cast<const UserLogoutRequest*>(buf);  //buff is a character array
int tempId = obj->MessageHeaderIn.TemplateID;

但是这是针对特定类型(UserLogoutRequest)的硬编码,我想替换它,我该怎么办?欢迎任何想法或建议。

我一直在为客户端服务器应用程序使用boost :: asio,我正在以消息的形式来回发送打包的结构,服务器需要确定传递给它的请求结构的类型,然后...

c++ object pointers boost boost-asio
1个回答
0
投票
如果

all

© www.soinside.com 2019 - 2024. All rights reserved.