Zugriff auf abgeleitete Klassenmethode vom Zeiger der Typbasisklasse nicht möglich

Ich sollte angeben, dass ich ein bisschen neu in OOP bin. Ich möchte einen Vektor vom Typ Zeiger auf Person erstellen, der eine Methode GetName () hat, und auf eine Methode GetSpg () aus meiner Player-Klasse zugreifen, die Person ableitet. Ich erhalte die Fehlermeldung "GetSpg () ist kein Mitglied von Person". Meine Frage wäre: Gibt es eine Möglichkeit, über den Vektor auf beide Funktionen zuzugreifen, sodass, wenn auf eine Person verwiesen wird, diese Methode nicht angezeigt wird, dies jedoch der Fall ist?

Hier ist mein Code:

#ifndef _PERSON_H
#define _PERSON_H

#include <iostream>
#include <algorithm>

typedef std::pair<std::string, std::string> StrPair;

class Person :private StrPair
{

  public:
    Person(const std::string& fn = "none", const std::string& sn = "none")         :StrPair(fn,sn){};
    virtual void Update(const std::string& fn, const std::string& sn){ StrPair::first = fn; StrPair::second = sn; };
    virtual const StrPair& GetName(){ return (const StrPair&)(*this); };
};
#endif

typedef std::pair<int, int> IntPair;

class Jucator: public Person, private IntPair
{
    std::string tip;
    int spg;
    int average;

  public:
    Jucator(const std::string& fn = "none", const std::string& sn = "none", 
        const std::string& t = "", const int& _spg = 0, const int& _avr = 0, 
        const int& _g = 0, const int& _r = 0) :Person(fn, sn),tip(t),spg(_spg),average(_avr),IntPair(_g,_r){};
    virtual void Update(const std::string& fn, const std::string& sn, const std::string& t, const int& _spg, const int& _avr,
        const int& _g, const int& _r){
    Person::Update(fn, sn); tip = t; spg = _spg; average = _avr; IntPair::first = _g; IntPair::second = _r;
};

virtual const int& GetSpg(){ return spg; };

Antworten auf die Frage(3)

Ihre Antwort auf die Frage