2

我正在尝试scoped_array使用 Boost 序列化来序列化 Boost,但编译器(VS2008)给了我以下错误消息:

error C2039: 'serialize' : is not a member of 'boost::scoped_array<T>'

如何序列化一个scoped_array? 我应该为此包含一个 Boost 库吗?

4

3 回答 3

1

可能不会。scoped_ptrandscoped_array旨在跟踪本地范围内的指针。

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

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

于 2011-08-07T19:08:58.837 回答
0

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

于 2011-08-07T19:19:27.993 回答
0

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

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];
    }
}
于 2011-12-01T18:03:20.900 回答