我得到"无效转换从`void*`到`std :: complex <double>*"

Eri*_*ugi 0 c++ calloc

我在下面有以下代码,

std::complex<double>** x;
x = calloc(10,sizeof(complex <double> *));
Run Code Online (Sandbox Code Playgroud)

此代码无法使用以下错误消息进行编译.

error: invalid conversion from 'void*' to 'std::complex<double>*' [-fpermissive]
Run Code Online (Sandbox Code Playgroud)

我怎样成功编译?为什么这段代码无法编译?

Mik*_*our 6

您正在尝试编写C++,就像它是C一样,它允许像这样的危险隐式转换.

要分配大小为10的动态数组,请使用

std::vector<std::complex<double>> numbers(10);
Run Code Online (Sandbox Code Playgroud)

并且,如果你真的想要一个指向第一个元素的指针

x = numbers.data();
Run Code Online (Sandbox Code Playgroud)