【发布时间】:2016-05-25 15:05:53
【问题描述】:
我想将新定义的数组bool myArr[] = { false, false, true }; 传递到现有函数下面。
void fun(bool** pArr, int idx)
{
if(NULL == *pArr)
return;
(*pArr)[idx] = false;
...
...
return;
}
我不允许更改子程序fun 中的任何内容,我想使用标识符myArr 调用该函数。当我尝试fun(&myArr, 2); 时,出现以下编译错误。
没有匹配函数调用
fun(bool (*)[3], int)候选者是:void fun(bool**, int)
我能想到的一种方法如下
bool* ptr = myArr;
fun(&ptr, 2);
但这对我来说看起来很脏,请建议一种使用 myArr 调用 fun my 的方法
【问题讨论】:
-
看起来很脏,基本上是怎么弄的。
-
if(NULL == *pArr)不舒服就是说反了。 -
hacky 方式可以是
fun((bool **)&myArr, 2); -
如果函数决定分配
*pArr会发生什么??这种设计有些可疑。您的“肮脏”方式是唯一正确的方式... -
@FrankPuffer 如果你的环境中的人在使用它,一旦你习惯它就会变得很自然。
标签: c++ arrays pointer-to-pointer