cpp多态和继承 - 编译器没有看到方法

Mat*_*ath 1 c++ polymorphism inheritance

我有两节课:

template<typename T>
class A{
    public:
        T& someMethod(std::string);
}

template<typename T>
class B: public A<T>{
public:
    T& someMethod(T&,T&);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是知道我不能打电话

B b;
b.someMethod("HelloWorld");
Run Code Online (Sandbox Code Playgroud)

因为我的编译器看不到someMethod(std::string).你知道为什么会这样吗?

For*_*veR 7

是的,这是隐藏的名字.你应该添加使用声明.

template<typename T>
class B: public A<T>{
public:
    using A<T>::someMethod;
    T& someMethod(T&,T&);
};
Run Code Online (Sandbox Code Playgroud)