deriv
base がinside にアクセスできないのはなぜ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)’
すでに 2 人が間違っているので、太字で質問します:なぜbase
公に継承する必要があるのですか? 内部からのみアクセスできますderiv
。