类的一个成员变量,声明为 double** w_h_i;
调试的时候变量窗口如下所示:
-w_h_i  0x00b04390
  -0x00b043d8
    - -0.061922..
变量已经初始化并赋值,为什么不能显示出数组的各个成员呢?
请问这是正常的吗?
为什么在某个成员函数中return w_h_i[i][j]取不出其中的值呢?
谢谢

解决方案 »

  1.   

    不能显示出数组的各个成员 这很正常,因为调试器不知道你数组的维素(几 X 几) 元素个数 不好一一列出w_h_i[i][j]取不出其中的值因为 其实 w_h_i[i][j] 相当于 w_h_i[ i * M + j ]
    M 是 第一维的稚 , 你没有给出定义的时候 最好给出
      

  2.   

    double** w_h_i 和double w_h_i[10][10]是两回事阿。即指针数组和二维数组是两回事!
    二维数组分配在连续的空间中,而指针数组分配的是不连续的空间。自然不能相等来对待
      

  3.   

    类初始化的时候就定义这个变量了
    w_h_i=new double*[Nh+1];
    for(int i=0;i<Nh+1;i++)
    w_h_i[i]=new double[Ni+1];其中Nh,Ni都是已赋值的成员变量
      

  4.   

    To happyparrot
    请问怎样取出其中的一个值?谢谢
    为什么赋值的时候可以w_h_i[i][j]=...呢?
      

  5.   

    类初始化的时候就定义这个变量了 ---??在构造函数中定义的??,应该在类里定义给出你的完整定义 和 赋值(初始化)语句我这里恰巧有个类似的: int a[2][2]={1,2,3,4};
    pp=new int*[2]; for(int i=0;i<2;i++)
    pp[i]=new int[2]; for(i=0;i<2;i++)
    for(int j=0;j<2;j++)
    pp[i][j]=a[i][j];
      

  6.   

    代码太长,摘了一部分出来
    class myClass
    {
      public:  void InitArray();
      void Run();
      double  getw_h_i(int i,int j);
      double** w_h_i;  private:
      double** w0_h_i;
    }void myClass::InitArray()
    {
      w_h_i=new double*[Nh+1];  //Nh Ni已知
      for(int i=0;i<Nh+1;i++)
      w_h_i[i]=new double[Ni+1];  w0_h_i=new double*[Nh+1];
      for(i=0;i<Nh+1;i++) 
      w0_h_i[i]=new double[Ni+1];
    }double myClass::getw_h_i(int i,int j)
    {
    return w_h_i[i][j];
    }void myClass::Run()
    {
      InitArray();
      for(int i=0;i<Nh+1;i++)
      for(int j=0;j<Ni+1;j++)
      {
       w0_h_i[i][j]=rand()*2.0/32767.0-1;
       w_h_i[i][j]=w0_h_i[i][j];
      }
    }
      

  7.   

    如果可能还是将InitArray();放入构造函数中确定 Run() 至少 运行了一次吗??还有就是,你取的(i,j) 是否超出了范围??