gpt4 book ai didi

c++ - 将 atan2 与类模板一起使用失败,对重载函数的调用不明确

转载 作者:行者123 更新时间:2023-11-30 02:04:42 25 4
gpt4 key购买 nike

我试图在我的类模板中使用函数 atan2 但它不起作用。我有一个名为 myclass 的类,我正在尝试制作一个函数模板,这个函数是对两个数字 a 和 b 进行 tan 运算。这些可以都是 int 或都是 double

template <class T>   
T myclass<T>::returnArg()
{
T arg(0);
arg = atan2(a, b);
return arg;
}

但是我得到了 error C2668: 'atan2' : ambiguous call to overloaded function。谁能提出解决此问题的建议?

谢谢。

编辑:我希望能够将整数和 double 传递给 atan2 函数,我已经尝试过了

arg = atan2(<T> a, <T> b);

但这没有用。

编辑 2:我在类(class)中将 a 和 b 声明为

template <class T> class myclass
{
private:
T a,b;
public:
myclass(): a(0),b(0){};
myclass(T r, T i) : a(r), b(i){};
// ...

最佳答案

C++ 为 atan2 定义了几个重载取决于其输入参数的类型。如果您的代码片段中的 ab 是不同的类型,那么由于调用不明确,重载解析将失败。

您需要根据需要强制转换 ab 以便它们的类型匹配。

如果您打算调用 atan2(double, double),另一种解决方案是包含 math.h 而不是 cmath 并且然后将该函数调用为 ::atan2( a, b )。这会将 ab 隐式转换为 double(如果可以进行此类转换)。

关于c++ - 将 atan2 与类模板一起使用失败,对重载函数的调用不明确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10305026/

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