Это базовый класс:
template <class T>
class DataLogger
{
// ...
public:
void AddData(T Data);
// ...
}
А это производный класс:
#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
}
Данная ошибка:
СТРОКА 29: IntelliSense: не существует подходящей функции преобразования из "std::pair" в "long double"
LINE 29: IntelliSense: слишком мало аргументов в вызове функции
Судя по всему, проблема в том, что я не могу получить доступ к методу в базовом классе из производного класса, хотя он определен как общедоступный.
Как заставить этот код работать?
(Моя IDE — Visual Studio 2010.)