为什么不能像这样传递参数
why cannot pass parameter like this?
我有一个函数:
int getCaseNum(float isovalue,float *F,int **point,int *dims,float *F_value)
{
int digtial_point[8];
int case_num=0;
int i = 0;
for(i=0;i<8;i++)
{
F_value[i] = F[GetPointIndex(point[i],dims)];
if(F_value[i]>isovalue)
{
digtial_point[i] = 1;
case_num = case_num + powf(2,i);
}
else
{
digtial_point[i] = 0;
}
}
return case_num;
}
然后我想在另一个函数中调用这个函数,如下所示:
int pointID[8][3];
int case_num = getCaseNum(isovalue,F,pointID,dims,F_value);
然而,当我编译代码时,它会说:
/Users/liyuanliu/Documents/lecture/sicvis/final_6b/mc510/proj6B.cxx:862:24: error:
no matching function for call to 'getCaseNum'
int case_num = getCaseNum(isovalue,F,pointID,dims,F_value);
^~~~~~~~~~
/Users/liyuanliu/Documents/lecture/sicvis/final_6b/mc510/proj6B.cxx:816:5: note:
candidate function not viable: no known conversion from 'int [8][3]' to
'int **' for 3rd argument
int getCaseNum(float isovalue,float *F,int **point,int *dims,float *F_value)
^
为什么会发生这种情况?我不能这样传递参数吗?
// Create a dynamic 2D int array
int **pointID=new int*[8];
for(int i=0;i<8;i++) {
pointID[i]=new int[3];
}
int case_num=getCaseNum(isovalue,F,pointID,dims,F_value);
您需要获得一个指向2D数组中第一个条目的指针。由于数组是连续的,您可以使用下面的逻辑来迭代
int getCaseNum(float isovalue,float *F,int* point,int *dims,float *F_value)
{
for (i = 0; i < 24; i++)
{
cout << *(point+i*sizeof(int));
}
}
caller:
int case_num = getCaseNum(isovalue,F,&pointID[0][0],&dims,F);
相关文章:
- 是否可以像这样编写c malloc函数代码
- 为什么我不能像这样在静态成员函数中调用静态成员变量?
- 对于像C++这样的现实世界语言,时间复杂性有什么一致的定义吗
- 澄清了 strcpy() 在像这样初始化字符数组时的工作 *Arr.
- 为什么我不能像这样直接将 int 分配给 int 指针:int *p = 6;?
- 如何将像'A'这样的单个字符替换为类似"10"?
- 为什么我不能像这样C++访问类的对象?
- 为什么这个指针到指针的二维数组像这样分配新的 int
- 像这样的PIMPL实现是否有任何简单的语法
- 使用输入重载时,是否可以像这样退出 while 循环
- 像这样的 for 循环被认为是不好的做法吗?
- 为什么 std::experimental::filesystem::p ath 不接受像 "*" 这样的通配符?
- 像这样写作业有什么问题
- 不应该像这样从 stl::list 中删除进入无限循环
- 为什么我不能像这样擦除矢量的所有元素?
- 为什么我不能像这样初始化结构
- 像这样在堆栈上创建一个小的像素图可以吗
- 是否可以像这样使操作员过载<<?
- 为什么不能像这样传递参数
- 像"T"这样的模板参数是否总是被解释为每个值?