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).你知道为什么会这样吗?
是的,这是隐藏的名字.你应该添加使用声明.
template<typename T>
class B: public A<T>{
public:
using A<T>::someMethod;
T& someMethod(T&,T&);
};
Run Code Online (Sandbox Code Playgroud)