Каждый узел может иметь список компонентов, и у меня возникают проблемы с сериализацией сценариев, которые представляют собой класс, наследующий класс компонента:
Код: Выделить всё
class Node; // forward declaration
// base component class, basically empty
struct Component
{
virtual ~Component() = default;
template
void save(Archive &ar) const {}
template
void load(Archive &ar) {}
};
// base script class with virtual functions
class Script : public Component
{
public:
virtual void start() {};
template
void save(Archive &ar) const
{
ar(cereal::base_class(this));
};
template
void load(Archive &ar)
{
ar(cereal::base_class(this));
};
};
CEREAL_REGISTER_POLYMORPHIC_RELATION(Component, Script) // i suppose i have to do this
Код: Выделить всё
class ExampleScript : public Script
{
Node *node;
int exampleValue = 42;
public:
template
void save(Archive &ar) const
{
ar(cereal::base_class(this), exampleValue);
}
template
void load(Archive &ar)
{
ar(cereal::base_class(this), exampleValue);
}
void start()
{
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79894509/cereal-serialization-of-inherited-classes-doesnt-work[/url]
Мобильная версия