我对构建方法有疑问:

virtual std::string getPerson() const;

我有一个子类的Player,一个父是Person。

类(class)球员:
class Player : public Person {
public:
    Player(const std::string& p_name,const std::string& p_lastname, const int& p_age, const std::string& p_position);
    virtual ~Player();
    virtual Person* clone() const;

    std::string getPosition() const;
    virtual std::string getPerson() const;


private:
    std::string m_position;

};

类(class)人员:
    class Person {
public:
    Person(const std::string& p_name,const std::string& p_lastname, const int& p_age);
    virtual ~Person();

    virtual std::string getPerson() const;
    std::string getName() const;
    std::string getLastName() const;
    int getAge() const;


private:
    std::string m_name;
    std::string m_lastname;
    int m_age;
};

当我尝试将其添加到Player中时:
std::string Player::getPerson()
{
    ostringstream os;

        os << "Name         :" << getName() << "\n";
        os << "LastName     :" << getLastName()() << "\n";
        os << "Age          :" << getAge()() << "\n";
        os << "Position     :" << getPosition();

        return os.str();
}

我找不到成员(member)声明

我无法正常工作,我需要打印如下内容:
Name     : John
Lastname : Smith
Age      : 22
Position : Goalie

最佳答案

您错过了函数签名末尾的const。这应该工作:

std::string Player::getPerson() const
{
    ostringstream os;

        os << "Name         :" << getName() << "\n";
        os << "LastName     :" << getLastName()() << "\n";
        os << "Age          :" << getAge()() << "\n";
        os << "Position     :" << getPosition();

        return os.str();
}

但是请介意我在注释中所说的,并更改函数的名称,或者甚至更好,使您的类通过overloading std::ostream operator<<一起使用。

10-08 14:18