在Derived
有template foo(T)
。 Base
中有2個過載foo()
。「使用」關鍵字可能會繼承較少的功能嗎?
struct Base
{
void foo (int x) {}
void foo (double x) {}
};
struct Derived : Base
{
template<typename T> void foo (T x) {}
using Base::foo;
};
現在,當foo()
被調用Derived
對象;如果適用,我只想使用Base::foo(int)
,否則應該調用Derived::foo(T)
。
Derived obj;
obj.foo(4); // calls B::foo(int)
obj.foo(4.5); // calls B::foo(double) <-- can we call Derived::foo(T) ?
總之,我想要的效果:
using Base::foo(int);
這可能嗎?以上只是一個例子。
爲了您的考慮:所有這些功能是否應該具有相同的名稱? – 2011-05-27 08:51:14
@克里斯,是的。對於'Base'對象,'foo()'傳遞'int' /'double'。對於'Derived'對象,'foo()'是通過任何類型傳遞的,但對於'foo(double)'有不同的計算。這只是一個例子。 – iammilind 2011-05-27 08:53:57