我正在尝试实现一个"DataManager"类 . 它应该能够使用任何类型的数组( std::vector<T>
):将其保存为二进制文件并读取 .
所以,我有一个模板类:
template<class T>
class DataManager;
这个类有一个方法,例如
int loadData()
{
std::ifstream filer(m_source_file.c_str(), ios::in | ios::binary);
size_t sz = 0;
filer.read((char*) &sz, sizeof(size_t));
T* arr = new T[sz];
filer.read((char*)arr, sizeof(T) * sz);
m_data.clear(); // a private field std::vector<T>
for (size_t i = 0; i < sz; ++i)
m_data.push_back(arr[i]);
filer.close();
delete[] arr;
return 0;
}
此代码适用于一些简单的类,包括 int
字段等 . 但是如果我尝试保存包含 std::string
字段的类,则在删除 arr
指针时会崩溃 . 我猜你已经用谷歌搜索了解这个问题的原因 . 但我希望DataManager能够处理任何类型的数据,我不知道如何做到这一点 .