我有一個名爲Athlete的父類,並且有一個名爲TennisPlayer的子類。我父母班有兩個屬性,分別是姓名和年薪。還有一個讀取方法,用於兩個類的用戶輸入。下面是我父母的樣子:C++中的繼承(父類和子類)
class Athlete
{
public:
Athlete();
Athlete(string name, float annual_salary);
virtual void read();
virtual void display();
string get_name() const;
float get_annual_salary();
void set_name(string name);
void set_annual_salary(float annual_salary);
private:
string name;
float annual_salary;
};
class TennisPlayer : public Athlete
{
public:
TennisPlayer();
TennisPlayer(string name, float annual_salary, int current_world_ranking);
int get_current_world_ranking();
void set_current_world_ranking(int current_world_ranking);
virtual void read();
virtual void display();
private:
int current_world_ranking;
};
運動員類的read()方法完美地工作。但是當談到tennisPlayer這個孩子班的時候,出現了一些問題,它不會接受用戶的輸入,而是直接要求我輸入當前的世界排名。這裏是我的TennisPlayer類的.cpp:
void TennisPlayer::read()
{
cout << "Enter name for tennis player: " ;
getline(cin, get_name());
cout << "Enter annual salary for tennis player: ";
cin >> get_annual_salary();
cout << "Enter current world ranking: ";
cin >> current_world_ranking;
}
Conctructor爲tennisPlayer類:
TennisPlayer::TennisPlayer(string name, float annual_salary ,int current_world_ranking)
: Athlete(name , annual_salary)
{
this->current_world_ranking = current_world_ranking;
}
也有閱讀tennisPlayer年薪時是個問題。我不太熟悉C++中的繼承。提前致謝。
你的問題混合'>>'提取操作符和'getline()'。 – greatwolf
'cin >> get_annual_salary();'除了任何其他問題,這是鑼讀入一個臨時的'浮動',立即被丟棄。因此,所有這些確實會忽略流中的某些內容(和/或可能在流上設置錯誤標誌)。 – BoBTFish
'getline(cin,get_name());'實際編譯? 'get_name()'是通過一個右值返回一個字符串。 – greatwolf