我有一个基类/父类:人类继承错误:个人会员
和两个子类/子类:球员,教练
这是基类人看起来头像:
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