gpt4 book ai didi

c++ - 无法将整数添加到 std::complex

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:15 25 4
gpt4 key购买 nike

我正在尝试将整数添加到 complex<double>但是我不能。这是代码的相关部分:

    using dcomplex = std::complex<double>;

dcomplex j = dcomplex(0,1);
// dcomplex r = 1+j;//this line is not compiling
dcomplex r = 1.0+j;//ok

我明白为什么j+=1没有编译,因为 operator+=里面重载complex并且没有隐式转换 int->double .然而operator+在复杂的内部没有重载(我没有在那里找到它)。所以它在其他地方重载了(在哪里?我找不到它)因此 int应转换为 double含蓄地。但事实并非如此。为什么?

最佳答案

来自 cppreference std::complex::operator+ 的重载是

template< class T >
complex<T> operator+( const complex<T>& lhs, const complex<T>& rhs);

template< class T >
complex<T> operator+( const complex<T>& lhs, const T& rhs);

template< class T >
complex<T> operator+( const T& lhs, const complex<T>& rhs);

当类型推导发生时会发生冲突,因为它将 T 计算为 doubleint。由于 T 不能同时存在,因此会产生错误。

关于c++ - 无法将整数添加到 std::complex<double>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32957107/

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