如何在先前在其基类中定义的派生类中重载和调用方法?

hkB*_*sai 1 c++ inheritance overloading base-class derived-class

这是基类:

template <class T>
class DataLogger
{
        // ...
    public:
        void AddData(T Data);
        // ...
}
Run Code Online (Sandbox Code Playgroud)

这是派生类:

#include "DataLogger.h"
#include <utility>

class Plotter : public DataLogger<std::pair<long double, long double>>
{
        // ...
    public:
        void AddData(long double x, long double y);
        // ...
}

// This method is supposed to wrap the original AddData() method
// which was defined in the base class
void Plotter::AddData(long double x, long double y)
{
    AddData(std::make_pair(x, y));  // LINE #29
}
Run Code Online (Sandbox Code Playgroud)

给定的错误是:

第29行:IntelliSense:没有合适的从"std :: pair"到"long double"的转换函数

第29行:IntelliSense:函数调用中的参数太少

显然,问题是我无法从派生类访问基类中的方法,即使它是公共定义的.

如何使此代码有效?

(我的IDE是Visual Studio 2010.)

Gen*_*yev 5

AddData从基础中被AddData派生类隐藏.明确限定呼叫DataLogger<std::pair<long double, long double>>::AddData(...)或将其带入范围using DataLogger<std::pair<long double, long double>>::AddData;