这是我在这里的第一个问题:) 我有我的小问题.. 这些是我的类(class):
class Gracz{
char znak_gracza;
public:
Gracz();
Gracz(char znak){
this->znak_gracza = znak;
};
friend void multiplayer();
};
class Osoba: public Gracz{
public:
Osoba();
Osoba(char znak){
this->znak_gracza = znak;
};
friend void multiplayer();
};
我还有一个多人游戏功能,我尝试使用带参数的构造函数:
void multiplayer(){
Osoba gracz1('O');
Osoba gracz2('X');
...
}
但它不起作用。
gracz1
和 gracz2
的错误相同
error C2248: 'Gracz::znak_gracza' : cannot access private member declared in class 'Gracz'
see declaration of 'Gracz::znak_gracza'
see declaration of 'Gracz'
最佳答案
派生类不能访问父类的私有(private)成员。您可以将它们声明为 protected
(这类似于私有(private)但允许派生类访问它),但在您的情况下,由于 Gracz
提供了一种初始化变量的方法,您应该只需让 Osoba
将参数传递给 Gracz
构造函数。
Osoba(char znak)
: Gracz(znak) // initializes parent class
{}
关于c++ - 无法访问类中声明的私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16814825/