gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:09 24 4
gpt4 key购买 nike

这是基类:

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
}

给定的错误是:

LINE 29: IntelliSense: no suitable conversion function from "std::pair" to "long double" exists

LINE 29: IntelliSense: too few arguments in function call

显然,问题是我无法从派生类访问基类中的方法,即使它被定义为 public。

如何让这段代码工作?

(我的 IDE 是 Visual Studio 2010。)

最佳答案

你的 AddData来自基地的被AddData隐藏了来自派生类。明确限定调用 DataLogger<std::pair<long double, long double>>::AddData(...)或者用 using DataLogger<std::pair<long double, long double>>::AddData; 将其纳入范围

关于c++ - 如何重载和调用先前在其基类中定义的派生类中的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4616462/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com