我有一個基類/父類:人類繼承錯誤:個人會員
和兩個子類/子類:球員,教練
這是基類人看起來頭像:
class Person
{
public:
Person(string name);
Person();
virtual ~Person();
string getName();
void setName(string name);
virtual void printSpec() const = 0;
private:
string name;
};
我試圖編譯和運行,它開始抱怨這一點:
include\Person.h||In constructor 'Coach::Coach(std::string, std::string)':|
include\Person.h|19|error: 'std::string Person::name' is private|
\src\Coach.cpp|5|error: within this context|
||=== Build finished: 2 errors, 0 warnings ===|
,並指出這一點:
private:
string name;
進一出的兩個構造子類「教練」的背景:
Coach::Coach(string name, string responsibility): Person(name){
this->name = name;
this->responsibility = responsibility;
}
但是,它並沒有對此做出了同樣的抱怨非常「Player」類構造函數中的相同行,只在「Coach」類的構造函數中聲明「字符串名稱是私有成員」。
我查了一些其他人的解決方案,試圖保護而不是私人,試圖改變變量的名稱,但沒有用。
什麼給?
如果您已經在Coach構造函數中調用Person(name),爲什麼需要設置this-> name在所有?我認爲Person :: Person會照顧那個嗎? 在任何情況下,受保護的範圍都應該起作用。 – Vivek
獲取一本[關於C++的正派書籍](http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 'Player :: name'是私人的。如果你希望派生類具有成員級訪問權(在這種情況下沒有理由,但多數民衆贊成在另一個問題)它需要*保護*或*公共*或*朋友* -ed(後者非常不尋常的派生類)。 – WhozCraig
你如何申報Coach課程? (不要忘記在那裏使用公開的詞) – doctorlove