-1
我有一個免費的模板功能,從文本文件加載:傳球*這模板函數的boost ::序列化代碼,使錯誤
// free template function
template<class U>
bool Main_Load(U& dataset, const std::string path) {
// Create an input archive
std::ifstream ifs(path);
boost::archive::text_iarchive archive_text(ifs);
// Load data
archive_text & dataset;
}
...
// in main()
Dataset1 dataset_restored;
Main_Load(dataset_restored, filename); // <--- OK
但我得到一個錯誤「是什麼():輸入流錯誤「當我從成員函數調用此模板函數時:
class Dataset1 {
...
virtual auto LoadDataset(AUX::DATA::SerializationType serialisation_type=AUX::DATA::SerializationType::Xml) -> bool {
Main_Load(*this, GetPath()); // <--- ERROR
};
};
...
// in main()
Dataset1 dataset_restored;
dataset_restored.LoadDataset(AUX::DATA::SerializationType::Text);
爲什麼我可以傳遞dataset_restored而不是*這個同一個對象?我想,有什麼不妥*這個結合:
archive_text & dataset;
編輯 我已經回答了我的問題。見下文。
提供一個[MCVE]請再現問題。 – user0042