我对构建方法有疑问:
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<<
一起使用。