6
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 d与之前使用的声明冲突... – diverscuba23 2010-08-23 04:56:26
在这种情况下,$ 13.3.1/4的真实含义是什么? – Chubsdad 2010-08-23 05:08:05
@chubsdad:由于'B2 :: fb()'隐藏了B1 :: fb()',因此在重载过程中'B1 :: fb()'不被视为候选函数,所以§13.3.1/ 4会不适用。 – 2010-08-23 05:10:02