为什么base无法进入deriv
内部deriv
?该程序用class deriv : public base
.
#include <cstdio>
class base
{
};
class deriv : base
{
public:
void f(deriv, int){printf("deriv::f(deriv, int)\n");}
void f(base){printf("deriv::f(base)\n");}
};
int main()
{
deriv d;
d.f(d);
}
17: error: ‘base’ is an inaccessible base of ‘deriv’
17: error: initializing argument 1 of ‘void deriv::f(base)’
因为已经有两个人说错了,我就加粗问:为什么base
要公开继承?它deriv
只能从内部访问。