C++ MFC:序列化指向字节数组的指针?

C++ MFC:序列化指向字节数组的指针?,c++,serialization,mfc,C++,Serialization,Mfc,试图在MFC框架内,处理serialize()中字节指针的正确方法是什么?例如,假设您有: PBYTE m_TheData; SIZE_T m_TheDataSize; 在Serialize()的类重写中,可以使用如下代码读取/写入m_the data字节数组成员及其大小: void MyClass::Serialize(CArchive&ar) { CDocument::Serialize(ar);//用直接基类替换“CDocument”! //注意:“大小”类型在32位和64位平台/版本

试图在MFC框架内,处理
serialize()
中字节指针的正确方法是什么?例如,假设您有:

PBYTE m_TheData; 
SIZE_T m_TheDataSize;

Serialize()
的类重写中,可以使用如下代码读取/写入
m_the data
字节数组成员及其大小:

void MyClass::Serialize(CArchive&ar)
{
CDocument::Serialize(ar);//用直接基类替换“CDocument”!
//注意:“大小”类型在32位和64位平台/版本之间变化。。。
uint64\u t dsFixed;/…使用此选项可保证64位“大小”写入/读取!
if(ar.IsStoring()){
//…写其他东西。。。
//…确保在写入和读取之间严格遵守顺序
dsFixed=uint64_t(m_数据大小);

ar你尝试过什么?你想用
CArchive
操作符来做这件事吗?我可以为m_数据大小做这件事,但它不知道m_数据的长度,那怎么行呢?我没有使用
CByteArray
来判断。我只是有一个指向某些数据的指针。对于写入:首先写入数据大小e、 然后使用
ar.Write(m_TheData,(int)(m_TheData))
。对于读取:读取大小,创建数据(使用
new
),然后使用ar.read(…)`。您应该将其添加为一个答案…为什么
size_T
而不是
size_T
?还有这一点:
CDocument::Serialize(ar);//替换“CDocument”关于你的直接基类!
不是很清楚…@Jabberwocky OP使用了
SIZE\u T
,这就是我为什么这么做的原因。我添加了基类
Serialize()
,让引用的函数看起来有点可用性(忽略它是一个常见的“错误”,尽管M/s文档说你应该调用它)。