我正在尝试实现一个"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能够处理任何类型的数据,我不知道如何做到这一点 .