如:class A;//有很多数据项,成员函数很少A*** a;//定义一个三维数组//a[大小1][大小2][大小3],其中“大小1~3”有不同的取值
//“大小123”的实际含义是工况号、桩号、截面号请问:我的类应该这么构造?能表达就行了,直接用三维数组大小不好定,用指针的指针的指针表示,new 的时候出错!头疼ing!问题解决给100分

解决方案 »

  1.   

    直接用一维数组分配一段内存,然后你根据 i,j,k计算出在一维数组中的位置
    然后就可以很容易操作了。
    例如第一个工况号、桩号、截面号 就是 a[0],a[1],a[2],
    一次存入就可以了!
      

  2.   

    动态分配多维数组:
    int*** a = new int**[2];
    for(int i = 0 ; i < 2 ; i++)
    {
    a[i] = new int*[3];
    for(int j = 0 ; j < 3 ;  j++)
    {
    a[i][j] = new int[4];
    for(int k = 0 ; k < 4 ; k++)
    {
    a[i][j][k] = 9;
    }
    }
    }
    注意delete
      

  3.   

    这种不定大小的数组是不能直接使用C++中的“数组”的。需要程序自己计算数组。具体方法如下:class A;
    int I,J,K; //确定三维数组的各维大小变量,由你的程序根据计算实际赋值A** ppA;  //为什么要使用三级指针,我看不出任何理由。
          //当然,如果确实要三级指针,方法是类似的ppA=malloc(I*J*K*sizeof(A*));
    for(I=0;I<?;I++){    //?处由具体的数值代入,下同
       for(J=0;J<?;J++){
            for(K=0,K<?;K++)
                *(ppA+I+J+K)=new A;
            }
       }
    }
    .......  //以下释放内存
    for(I=0;I<?;I++){
       for(J=0;J<?;J++){
            for(K=0,K<?;K++)
               delete (*(ppA+I+J+K));
            }
       }
    }
    free(ppA);
      

  4.   

    to Phourm:你的方法不对,我最开始就是用的这种方法。感谢关注。