我試圖使用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