【发布时间】:2011-01-23 09:37:27
【问题描述】:
我的班级中有一个函数应该得到一个多维数组。问题是这些维度的值是在类中计算的,使用另一个函数并存储在一些公共变量中。因此类中的所有其他函数都可以读取存储在这些变量中的值。 函数的定义是这样的:
double calcSS(double tfpairexp[][max_ctrl_no][max_rep_no])
其中max_ctrl_no 和max_rep_no 是那些public 变量。
我这样调用函数:
calcSS(tfpairexp);
但是编译器对函数的定义给出了错误。如果我输入一些常数而不是那些变量,则没有错误。但是我不知道程序开始时的维度。 我该怎么办?
更新
void tripleofgenes(int begind,int endind) {
for (int tf1=0; tf1<tfact; ++tf1)
{
for (int tf2=tf1+1; tf2<tfact; ++tf2)
{
double tfpairexp[cchips][max_ctrl_no][max_rep_no];
double w,d;
int ctrl_no;int c, ctr;
for (int j = 0; j < cchips ; j += c)
{
c = chips[j].crepls;
int ctrl_no=0;
for (int *p = chips[j].ctrl ; p && (ctr=*p)>=0; ++p,ctrl_no++) {
for (int k = 0; k < c; ++k)
{
double tf1exp=chips[k+j].vals[tf1].val-((chips[k+j].useextra) ? chips[ctr].extra[tf1] : chips[ctr].mean[tf1].val);
double tf2exp=chips[k+j].vals[tf2].val-((chips[k+j].useextra) ? chips[ctr].extra[tf2] : chips[ctr].mean[tf2].val);
tfpairexp[j][ctrl_no][k]=interactionFunc(tf1exp,tf2exp,1);
}
}
}
for (int tg=begind; tg<=endind; ++tg)
if (tf1!=tg){
calcSS(tfpairexp);
}
}
}
fclose(f);
}
double calcSS(double ***tfpairexp)
{
for (int row = 0; row <= 1 ; row++)
for (int col = 0; col <= 1 ; col++) {
int cond=0;
for (int j = 0; j < cchips; j += c) {
c = chips[j].crepls; // the number of replicants
int ctrl_no=0;
for (int *p = chips[j].ctrl; p && (ctr=*p)>=0; ++p,ctrl_no++) {
a = tfpairexp[j][ctrl_no][k];}
}
}
}
}
【问题讨论】:
-
void Tripleofgenes(int begind,int endind) { for (int tf1=0; tf1
-
@Pegah:这个函数和 calcSS() 都是在你的类中定义的,对吧?
-
@Pegah:那么您不需要传递维度,因为您已经在该函数中拥有它们。只需将您的
calcSS()定义为calcSS(double ***arr).. 并像往常一样以arr[i][j][k]访问元素! -
我就是这样做的。你也可以在上面看到它。但它在这里说: calcSS(tfpairexp);我称之为 calcSS,它找不到合适的功能。
-
@Pegah:再次查看我的答案;我已经更新了。顺便说一句,你也可以发布错误消息吗?你为什么不一次发布所有相关的东西?
标签: c++ multidimensional-array