我正在尝试scoped_array
使用 Boost 序列化来序列化 Boost,但编译器(VS2008)给了我以下错误消息:
error C2039: 'serialize' : is not a member of 'boost::scoped_array<T>'
如何序列化一个scoped_array
? 我应该为此包含一个 Boost 库吗?
我正在尝试scoped_array
使用 Boost 序列化来序列化 Boost,但编译器(VS2008)给了我以下错误消息:
error C2039: 'serialize' : is not a member of 'boost::scoped_array<T>'
如何序列化一个scoped_array
? 我应该为此包含一个 Boost 库吗?
可能不会。scoped_ptr
andscoped_array
旨在跟踪本地范围内的指针。
scoped_ptr 模板是满足简单需求的简单解决方案。它提供了一个基本的“资源获取即初始化”工具,没有共享所有权或所有权转移语义。它的名称和语义的实施(通过不可复制)都表明它打算仅在当前范围内保留所有权。
将内容序列化并稍后回读似乎违背了课程的意图。
序列化数组本身,而不是围绕它的内存管理包装器。
这是我最终使用的解决方案(对称 - 用于保存和加载):
void myClass::serialize(Archive & ar, const unsigned int file_version)
{
ar & myScopedArraySIZE;
// Only gets called during loading
if (Archive::is_loading::value)
{
myScopedArray.reset(new ColourPtr[myScopedArraySIZE]);
}
for (uint i = 0; i < myScopedArraySize; i++)
{
ar & myScopedArray[i];
}
}