В последние дни я struggeling с проблемой подталкивания сериализации:Повышение Сериализации - Экспорт в нескольких файлах CPP
Я пытаюсь сериализации и десериализаций множественного получены классов в нескольких файлах. Для того, чтобы сохранить его родовое я создал шаблон функции, такие как:
template<typename T>
void
Helper::SaveToFile(T* data, std::string file)
{
std::ofstream ofs(file.c_str());
boost::archive::text_oarchive oa(ofs);
oa << data;
}
Для сериализации производных классов, чтобы работать, мне нужно использовать подталкивание макро BOOST_CLASS_EXPORT
. Тем не менее, я не могу поместить этот метод шаблона в файл CPP, и с макросом в заголовке я получаю эти неприятные ошибки «duplicate init_guid
».
И даже если я не хочу использовать метод шаблона, я все равно получаю эти ошибки из-за того, что у меня разные методы сериализации в разных файлах и, следовательно, экспорт несколько раз.
Есть ли у кого-нибудь советы по тому, как он работает с методами шаблонов или как экспортировать классы в несколько файлов CPP?
Я уже пробовал разделить BOOST_CLASS_EXPORT
на BOOST_CLASS_EXPORT_KEY
и BOOST_CLASS_EXPORT_IMPLEMENT
, все еще ведущий к той же ошибке. Кроме того, я действительно не знал, куда положить макрос BOOST_CLASS_EXPORT_IMPLEMENT
, когда есть только файл заголовка для определенного класса.
Спасибо за поставив меня на правильном пути! Тем не менее, я все еще получаю «незарегистрированные (производные) классы» ошибки, если я помещаю их только в один файл CPP. – Max