这是我的代码:
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访问我的私人会员还需要做些什么?
您的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)
| 归档时间: |
|
| 查看次数: |
1389 次 |
| 最近记录: |