gpt4 book ai didi

c++ - 如何在 C++ 中调用泛型结构

转载 作者:行者123 更新时间:2023-11-30 05:18:36 29 4
gpt4 key购买 nike

我正在尝试制作一个类,我们可以在其中对来自 char* 的不同结构进行编码和解码。

我正在按照以下方式执行此操作,我制作了一个摘要名为 CANgenericMsg 的通用类,其中 CANgenericMsg.cpp 为:

#include "CANgenericMsg.h"

CANgenericMsg::CANgenericMsg() {
// TODO Auto-generated constructor stub

}

void CANgenericMsg::decode(char* chars) {
CANgenericMsg::str* data = reinterpret_cast<CANgenericMsg::str*>(chars);
structure = *data;
}

char* CANgenericMsg::encode() {
return reinterpret_cast<char*>(&structure);
}


CANgenericMsg::~CANgenericMsg() {
// TODO Auto-generated destructor stub
}

还有标题:

class CANgenericMsg {
public:
CANgenericMsg();
void decode(char* chars);
virtual ~CANgenericMsg();
char* encode();
virtual struct str structure;
};

该类由真实的类如CANintegermsg扩展,其中该类的构造函数初始化结构体:

class CANintegermsg: public CANgenericMsg {
public:
CANintegermsg(int i);
virtual ~CANintegermsg();

struct str {
unsigned short int my_int;
} structure;
};

想法是您可以在每个扩展类中设置特定的结构类型。问题是 C++ 不识别虚拟结构。我可以将编码和解码函数移动到每个扩展类,但由于它们很多,这会导致代码重复。是否存在能够像这样使用编码和解码函数的简洁方法?

最佳答案

听起来(如果我错了请纠正我)就像你在尝试重新实现类似 Protocol Buffers 的东西( Protocol Buffer )。您可以结合使用 protobuf 消息、子消息和 extensions实现您的目标。

Protobufs 也很容易 converted to & parsed from文本和二进制表示。

关于c++ - 如何在 C++ 中调用泛型结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41613334/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com