我有我缩小到下面的代码中的问题:错误的私有继承和函数重载
class A
{
};
class B : private A
{
};
void f(A*)
{
}
void f(void*)
{
}
int main()
{
B b;
f(&b);
}
与GCC 4.7提供了以下错误:
error: ‘A’ is an inaccessible base of ‘B’
我知道,无法访问,但我希望编译器调用f(void *)。这种行为是正常的还是我做错了什么?或者,这可能是一个编译器错误?
至于为什么是这样:* *,因为它会导致这样的错误。所以,如果你想防止人们不小心调用'f(void *)',你现在知道如何,如果他们仍然想调用它,他们可以只投'f(static_cast (&b));'。 –
我看,这是有道理的,但我有点失望。 – Philippe