struct B1{
int d;
void fb(){};
};
struct B2 : B1{
using B1::d;
using B1::fb;
int d; // why this gives error?
void fb(){} // and this does not?
};
int main(){}
Это потому, B1::fb()
трактуется как B1::fb(B1*)
and B2::fb()
рассматривается как B2::fb(B2*)
? То есть, неявный параметр, помочь в их отличии?Использование декларации (производный класс)
стандарт$ 13.3.1/4-
Для nonconversion функций, введенных путем с использованием-декларации в производном классе , функция считается быть членом производного класса для с целью определяя тип параметра неявного объекта .
и INT г конфликтует с предыдущим объявлением его от использования ... – diverscuba23
Какова реальная зависимость от $ 13.3.1/4 в этом случае? – Chubsdad
@chubsdad: Поскольку 'B2 :: fb()' hides 'B1 :: fb() ',' B1 :: fb() 'не рассматривается как функция-кандидат во время разрешения перегрузки, поэтому §13.3.1/4 делает не применять. –