【发布时间】:2021-04-13 10:36:45
【问题描述】:
我有一个变量int*** dp,我想通过引用将它传递给一个函数来初始化它。但是当我尝试调用该函数时:
int*** dp;
int c1, c2, c3;
void initialize(int*** d)
{
d = new int**[c1 + 1];
for(int i = 0; i <= c1; i++)
{
d[i] = new int*[c2 + 1];
for(int j = 0; j <= c2; j++)
{
d[i][j] = new int[c3 + 1];
for(int k = 0; k <= c3; k++)
{
d[i][j][k] = 0;
}
}
}
d[0][0][0] = 1;
}
initialize(dp);
我收到以下编译错误:从 'int' 到 'int***' [-fpermissive] 的无效转换。
即使我尝试通过引用传递它:
void initialize(int*** &d)
还是不行!您能解释一下为什么它不起作用以及如何解决吗?
【问题讨论】:
-
对我来说,任何
type***都是在类中封装矩阵失败。模拟矩阵是无效的方法。std::vector<std::vector<std::vector<int>>>会更好,但还是很烂。 -
不要成为three star programmer,尤其是在 C++ 中。
-
你用的是什么编译器?
initialize(int***&d)变体,虽然真的真的 糟糕的风格(不要不将它投入生产),但适用于 GNU C++ 8.3.0。 -
哪一行给出了那个错误。您粘贴的代码中的任何行都不应该出现该错误?
-
你不能把函数调用放在不知名的地方,请出示minimal reproducible example。
标签: c++ pointers multidimensional-array parameter-passing