基本クラス/親クラスが 1 つあります: Person
2 つのサブクラス/子クラス: Player、Coach
基本クラス Person のヘッダーは次のようになります。
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」の 2 つのコンストラクターのうちの 1 つのコンテキストでは、次のようになります。
Coach::Coach(string name, string responsibility): Person(name){
this->name = name;
this->responsibility = responsibility;
}
ただし、「Player」クラスのコンストラクターの同じ行について同じ苦情を言うのではなく、「Coach」クラスのコンストラクターの「文字列名がプライベートメンバーである」ということだけを訴えます。
私は他の人のためにいくつかの解決策を調べ、プライベートではなく保護を試み、変数の名前を変更しようとしましたが、役に立ちませんでした。
何を与える?