gpt4 book ai didi

c++ - 无法使用友元类从基类访问私有(private)成员

转载 作者:太空宇宙 更新时间:2023-11-04 14:56:52 25 4
gpt4 key购买 nike

这是我的代码:

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'

我还需要做什么才能从 Base 访问我的私有(private)成员?

最佳答案

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

如果你想让一个类的用户访问某些东西,在某些时候你需要写一个public:函数:

class SubClass : public Base
{
public:
int getN()
{
return Base::getN();
}
};

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

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

关于c++ - 无法使用友元类从基类访问私有(private)成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8347301/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com