重複の可能性:
C++: 非表示ルールの根拠
コードがあるとします:
class A
{
public:
void f(int s) {}
};
class B:public A
{
public:
void f() {}
};
int main()
{ B ob;
ob.f(4);
}
この場合、コンパイラは「'B::f(int)' の呼び出しに一致する関数がありません」というエラーを生成しますが、クラス B は A を public として継承しているため、B には関数「void f(int s)」が必要です。ここでコンパイラがエラーを生成する理由がわかりませんか?