我试图使用Boost的序列化序列化加速scoped_array
但是编译器(VS2008)是给我下面的错误信息:如何使用Boost序列化序列化Boost scoped_array?
error C2039: 'serialize' : is not a member of 'boost::scoped_array<T>'
如何序列化一个scoped_array
?我应该为此包括一个Boost库吗?
我试图使用Boost的序列化序列化加速scoped_array
但是编译器(VS2008)是给我下面的错误信息:如何使用Boost序列化序列化Boost scoped_array?
error C2039: 'serialize' : is not a member of 'boost::scoped_array<T>'
如何序列化一个scoped_array
?我应该为此包括一个Boost库吗?
不要猜测。 scoped_ptr
和scoped_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];
}
}
不应该是 ar&BOOST_SERIALIZATION_NVP(myScopedArraySIZE); 和 ar&BOOST_SERIALIZATION_NVP(myScopedArray [i]); ? – PeterD
谢谢你的信息博。不幸的是,我不负责确定应该使用哪种类型的变量,所以我别无选择,只能对这些数据结构中包含的值进行序列化。我发布了一个适用于我的解决方案。 – Tymek