我遇到了一些代码片段,一个类可以通过其模板参数从另一个类继承。但是,我不明白为什么我需要using
在struct D
. 我尝试调用的say_hi()
函数,d
但error: request for member ‘say_hi’ is ambiguous
如果我有这using
三行,它会声明并且错误消失了。谁能告诉我为什么?
struct C1 {
void say_hi(int) { puts("int hi"); }
};
struct C2 {
void say_hi(char) { puts("char hi"); }
};
struct C3 {
void say_hi(double) { puts("double hi"); }
};
template<typename T, typename U, typename V>
struct D : T, U, V {
using T::say_hi;
using U::say_hi;
using V::say_hi;
};
D<C1, C2, C3> d;