我的应用程序byte[]
通过网络接收到一个包含我无法控制的固定大小结构的成员表示的网络。让我们称之为Data
:
struct Data {
int id;
int count;
}
这很好用:
char buffer[]; // filled with bytes from the network...
Data data;
memcpy(&data, data, sizeof(Data));
现在,我想让Data
类型从具有(纯)虚函数的类继承:
struct Data : public SomethingVirtual {
int id;
int count;
}
上面的代码不再有效。对于虚拟类,实例的前 N 个字节似乎包含指向 vtable 的指针,因此数据是偏移的。
我可以增加调用 to 的指针memcpy
,但我现在想知道这种方法是否被误导了。如果可能的话,我想避免有太多的间接层或内存复制。此外,该方法理想情况下应该适用于体系结构和编译器,尽管我主要针对使用 g++ 的 i686。
这个问题有什么好的解决方案?