complex<double>编译报错

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

 
  
xxxx.cpp: In member function ‘ void xxxx::xxxxxxxx()’:
xxxx.cpp:
100 : error: ISO C ++ forbids declaration of ‘type name’ with no type
xxxx.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<double>* 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<double> 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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值