Boost untergeordnete Klasse serialisieren

Ich habe Basisklasse Benutzer, die serialisierbar ist:

class User
{
public:
    User();
    std::string GetLogin() const;
    void SetLogin(std::string login);

protected:
    std::string mLogin;
    friend class boost::serialization::access;

    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & mLogin;

    }
};

Diese Klasse kann von einer anderen Klasse wie dieser geerbt werden:

class UserA : public User
{
    UserA();
private:
    friend class boost::serialization::access;

    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & boost::serialization::base_object<User>(*this);
        ar & mIsSomething;
    }
    bool mIsSomething = true;
}

Um diese Benutzer zu behandeln, habe ich eine "Manager" -Klasse, die einen Benutzervektor enthält:

class Manager
{
public:

    bool Add(User user);
    bool Remove(unsigned int index);

private:
    std::vector<User> mUsers;

    friend class boost::serialization::access;

    template<class Archive>
    void serialize(Archive & ar, const unsigned int version)
    {
        ar & mUsers;
    }
};

So kann mein Manager mit UserA oder UserB gefüllt werden (niemals beide gleichzeitig). Wenn ich ein Element von @ abruManager Ich warf es einfach zurück in die richtige Kinderklasse. Dieser Teil funktioniert gut.

Aber wenn ich das @ serialisieren wiManager Klasse offensichtlich Boost weiß nicht, welche Art vonUser Ich versuche zu serialisieren und die zusätzlichen Felder aus der untergeordneten Klasse werden nicht serialisiert.

as ist meine Lösung hie
Ist mein Design völlig falsch?
Sollte ich meine Managerklasse auf so etwas spezialisieren?

class Manager
    {
        bool Add(UserA user);
        bool Add(UserB user);
    private:
        std::vector<UserA> mUsersA;
        std::vector<UserB> mUsersB;
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage