complex

好久没做事情,也就没什么内容可更新的。这两天开始做事情了,问题就不断地出现了,就连使用标准的complex类都出问题。先说说问题吧。

xxxx.cpp: In member function ‘void xxxx::xxxxxxxx()’:xxxx.cpp:100: error: ISO C++ forbids declaration of ‘type name’ with no typexxxx.cpp:100: error: expected primary-expression before ‘double’xxxx.cpp:100: error: expected ‘;’ before ‘double’make: *** [mdqr.o] Error 1

编译的时候报错,其实那一行就是申请一块double类型复数的数组内存,

// xxxx.cpp#include <complex>using std::complex;...// complex<double>* eig;eig = new complex<double>[N]; // this is line 100

头文件和命名空间都使用了的阿,而且在头文件类中声明 complex* eig的时候还没有报错。写一个最简单的例子,测试complex的使用。如下,

#include <iostream>#include <complex>using std::complex;using std::cout;using std::endl;int main(){    complex<double>* eig = new complex<double>[3];    eig[0] = complex<double>(1,2);    cout << eig[0] << endl;    return 0;}

编译通过,运行结果正确。到底是是为什么xxxx.cpp里面会出现问题呢?

后来同学建议使用typedef complex dcmplx_t;改了之后的代码如下,

// xxxx.cpp#include <complex>using std::complex;typedef complex<double> dcmplx_t;...// dcmplx_t* eig;eig = new dcmplx_t[N];

这样就可以编译了,结果也是正确的。但还是没找到之前错误的原因。

在ubuntu10.04上编译的,gcc-g++版本4.4.3, 程序中使用了LAPACKE库。

那就先这样了,希望知道原因的能帮忙解释下。
原文链接: https://www.cnblogs.com/Frandy/archive/2011/07/12/double_complex.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/28512

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月8日 上午6:01
下一篇 2023年2月8日 上午6:02

相关推荐