C++ 如何使用Boost序列化来序列化Boost作用域的_数组?

C++ 如何使用Boost序列化来序列化Boost作用域的_数组?,c++,boost-serialization,C++,Boost Serialization,我试图使用Boost序列化来序列化Boost作用域_数组,但编译器(VS2008)向我发出以下错误消息: error C2039: 'serialize' : is not a member of 'boost::scoped_array<T>' 错误C2039:“序列化”:不是“boost::scoped_数组”的成员 如何序列化作用域数组?是否有一个Boost库我应该包括在其中?我想没有。scoped_ptr和scoped_数组用于跟踪本地作用域中的指针 作用域_ptr模板是

我试图使用Boost序列化来序列化Boost
作用域_数组
,但编译器(VS2008)向我发出以下错误消息:

error C2039: 'serialize' : is not a member of 'boost::scoped_array<T>'
错误C2039:“序列化”:不是“boost::scoped_数组”的成员

如何序列化
作用域数组
?是否有一个Boost库我应该包括在其中?

我想没有。
scoped_ptr
scoped_数组
用于跟踪本地作用域中的指针

作用域_ptr模板是满足简单需求的简单解决方案。它提供了一个基本的“资源获取即初始化”功能,没有共享所有权或所有权转移语义。它的名称和语义的实施(通过不可复制)都表明它只在当前范围内保留所有权的意图


将内容序列化并稍后读回似乎违背了类的意图。

序列化数组本身,而不是围绕它的内存管理包装器。

以下是我最终使用的解决方案(对称--用于保存和加载):

void myClass::serialize(存档&ar,常量unsigned int file\u版本)
{
ar&myScopedArraySIZE;
//仅在加载期间调用
if(存档::正在加载::值)
{
重置(新的colorptr[myScopedArraySIZE]);
}
对于(uint i=0;i
谢谢您提供的信息。不幸的是,我不负责决定应该使用哪种类型的变量,所以我别无选择,只能序列化这些数据结构中包含的值。我发布了一个适合我的解决方案。从那以后,我已经想出了如何做到这一点。:)不应该是ar&BOOST_序列化_NVP(myScopedArraySIZE);和ar&BOOST_序列化_NVP(myScopedArray[i])?
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];
    }
}