[英]How to serialize multidimensional array on cereal, C++ serialize library
有誰知道如何在谷物,C ++庫上序列化多維數組?
我通過如下所示的源代碼進行了測試。 但是,它抱怨
“錯誤C2338:谷物不支持序列化原始指針-請使用智能指針”
如代碼中所示,已經使用了智能指針“ shared_ptr”。
錯在哪里呢?
const int square_size = 3;
int** a = new int*[square_size];
for (int i = 0; i < square_size; i++) {
a[i] = new int[square_size];
}
std::shared_ptr<int*> sp(a, [](int** a) {for (int i = 0;i < square_size;i++) { delete a[i]; }});
std::ofstream ofs("output.cereal", std::ios::binary);
cereal::BinaryOutputArchive archive(ofs);
archive(sp);
您仍在序列化原始指針-您的shared_ptr
持有int *
,因此,當谷物去引用智能指針時,它會發現自己正在嘗試序列化原始指針,這是它不支持的。
對於特定示例,最簡單的解決方案之一是考慮使用std::vector
代替帶有new的原始指針,這還可以節省您在shared_ptr
中編寫自定義析構函數的工作。
如果這只是一個簡化的示例,那么如果您想讓谷物進行序列化,則必須重組代碼以不擁有擁有數據的原始指針。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.