我有两节课:

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

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

我的问题是知道我无法打电话
B b;
b.someMethod("HelloWorld");

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

最佳答案

是的,这是名字隐藏。您应该只使用声明添加。

template<typename T>
class B: public A<T>{
public:
    using A<T>::someMethod;
    T& someMethod(T&,T&);
};

关于c++ - cpp多态性和继承-编译器看不到方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34925401/

10-13 03:33