c++ - 无法访问类中声明的私有(private)成员

标签 c++ class constructor constructorargument

这是我在这里的第一个问题:) 我有我的小问题.. 这些是我的类(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');
...
}

但它不起作用。

gracz1gracz2 的错误相同

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/

相关文章:

c++ - Hook KiUserExceptionDispatcher- 无法在任何地方找到 typedef?

c++ - 混合 Objective-C 和 C++ 代码

c++ - catch 在此 C++ 代码中的用法是什么

c++ - C++ 中带有约束类型的可变参数函数添加

c++ - 为什么不首先将类(class)成员设置为公开?

c# - 单击“确定”按钮后,进行页面重定向

python - Python 中的替代构造函数

java - 如何抛出除以 0 的异常?

Python——类与模块

VC2010 中的 C++0x 对等构造函数