double ** fea::CreatBB(void)
{
static double BB[8][4];
BB[3][3]=7;
return BB;//这儿是错误的,怎么返回呢?
}

解决方案 »

  1.   

    这种情况,最好在外部声明数组
    void fea::CreatBB(double BB[])
    {
    //添加函数实现代码
    }
    void fea::func()
    {
       double BB[8][4];
       CreateBB(BB);
    //其它代码
    }
      

  2.   

    double** fea::CreatBB(void)
    {
        static double BB[8][4];
        BB[3][3]=7;
        return (double**)BB;//这样不行吗?
    }
      

  3.   

    double** fea::CreatBB(void)
    {
        static double BB[8][4];
        BB[3][3]=7;
        return &BB;
    }
      

  4.   

    double * fea::CreatBB(void)
    {
    static double BB[8][4];
    BB[3][3]=7;
    return &BB[3][3];//想得到 7 的话; 如果是 return bb  返回的是默认值
    }
      

  5.   

    在栈上分配的内存是不能返回的static变量-----经过实验,以上的方法均不可行。怎么不行?
      

  6.   

    当然可以了
    用了static的变量,变量不会因为这个类死掉而死掉
    那返回地址当然可以

    double** fea::CreatBB(void)
    {
        static double BB[8][4];
        BB[3][3]=7;
        return (double**)BB;//这样不行吗?
    }
    这种方法是可以的
    然而比较麻烦的事情是,你得到了这个地址之后,再访问某个单元中的内容
      

  7.   

    return &BB[3][3];//想得到 7 的话; 如果是 return bb  返回的是默认值
    ----你没初始化就用那不就挂了
      

  8.   

    tracing(攀登者) 正解!想返回数组,应该用new或者malloc之类。
      

  9.   

    manbaum(砸锅上网) ------
    注意是:static变量
      

  10.   

    多谢 liuxiuk() ,确实没注意是 static。那样的话,就是必须先初始化一下。楼主所说的错误是因为类型不匹配。你的return BB的时候BB的类型可以被解释成double*[],或者double[][],但你的函数需要的返回是double**,当然会出错了。
      

  11.   

    直接用new申请一个内存快返回就可以了。
    多位数组通过指针时还是会退化的