相关疑难解决方法(0)

为什么abs(complex <int>)总是返回零?

以下代码与VS2010打印0,与我的期望相反:

#include <complex>
#include <iostream>

using namespace std;

int main(void)
{
    complex<int> z(20, 200);
    cout << abs<int>(z) << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

它的类型是正常的double.

c++ math stl std complex-numbers

18
推荐指数
2
解决办法
1930
查看次数

复制初始化 - 从'int'转换为非标量类型

我想知道如何定义类my_int,以便int中的转换std::complex< my_int >由编译器完成,而不是由我手动完成.

如果4未转换为" my_int",则以下程序无法编译

// Example program
#include <iostream>
#include <string>
#include <complex>

struct my_int
{
    my_int() : _i(0) {}
    my_int(const my_int& mi) : _i(mi._i) {}

    my_int(int i) : _i(i) {}
    operator int(){return _i;}

    int _i;
};

std::ostream& operator<<(std::ostream& os, const my_int& mi)
{
    os << mi._i;
    return os;
}

int main()
{
  std::complex<my_int> ci = 4; // Casting 4 to my_int works

  std::cout << ci;
}
Run Code Online (Sandbox Code Playgroud)

我知道,如果你初始化cistd::complex<my_int> ci(4)它的工作原理,但我想它与拷贝初始化工作.

c++ templates copy-initialization c++11 c++14

6
推荐指数
1
解决办法
391
查看次数

标签 统计

c++ ×2

c++11 ×1

c++14 ×1

complex-numbers ×1

copy-initialization ×1

math ×1

std ×1

stl ×1

templates ×1