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