zoukankan      html  css  js  c++  java
  • 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库。

    那就先这样了,希望知道原因的能帮忙解释下。

  • 相关阅读:
    JS的Document属性和方法小结
    机器学习笔记——最小二乘法
    c语言中printf()函数中的参数计算顺序
    机器学习笔记——拉格朗日乘子法和KKT条件
    Linux bash笔记
    java.util.ConcurrentModificationException的解决办法
    浅谈对java中传参问题的理解
    机器学习笔记——t分布知识点总结
    机器学习笔记——测试集和验证集的区别
    java中对HashMap遍历的方式
  • 原文地址:https://www.cnblogs.com/Frandy/p/double_complex.html
Copyright © 2011-2022 走看看