无法使用朋友类从基类访问私有成员

Adr*_*ian 0 c++

这是我的代码:

class Base
{
    friend class SubClass;
    int n;
    virtual int getN()
    {
        return n;
    }
};

class SubClass: public Base
{
public:
    SubClass() {}
    SubClass(const SubClass& s) {}


};

int _tmain(int argc, _TCHAR* argv[])
{
    SubClass s;
    int x = s.getN();

    return 0;
}


error C2248: 'Base::getN' : cannot access private member declared in class 'Base'
Run Code Online (Sandbox Code Playgroud)

从Base访问我的私人会员还需要做些什么?

GMa*_*ckG 6

您的friend声明意味着SubClass可以在范围内SubClass访问它.

如果您希望类的用户访问某些内容,那么在某些时候您需要一个写入public:功能:

class SubClass : public Base
{
public:
    int getN()
    {
        return Base::getN();
    }
};
Run Code Online (Sandbox Code Playgroud)

您可以编写using声明来将基类函数引入当前类:

class SubClass : public Base
{
public:
    // getN is considered declared at this point now (in public)
    using Base::getN(); 
};
Run Code Online (Sandbox Code Playgroud)