只是这个奇怪问题的一点背景:我有一个网络框架(RTI DDS),它有一个 C 序列化函数,它接受一个指针并将 C 结构转换为字符串。
它也(并且也设计用于)C++ 类。但是,如果我通过添加虚函数使 C++ 类具有多态性,则此序列化功能会出现段错误,有时甚至更糟,会提供错误的输出。
我假设它在内部对结构的内存布局做出了假设。
是否可以从多态 C++ 对象中获取原始 C 指针?
我知道我可以创建每个结构两次,一次是多态的,一次是非多态的,但这会导致大量的胶水代码。
目前我没有想法。
一些技术背景: C 函数在 RTI DDS Source 包中:
DynamicData.c DDS_ReturnCode_t DDS_DynamicData_to_cdr_buffer(...) { ..