函数调用中的数据类型不匹配
Data types not matching in function call
我在为我编写的函数匹配数据类型时遇到问题,
函数是:
void generate_all_paths(int size, char *maze[][size], int x, int y) {
...
}
这个参数size,x,y都超级简单。我相信是迷宫让我失望了。它旨在成为一个多维大小 x 大小的数组,包含字母表中的字符,就像一个迷宫。
当我尝试这样调用 main 中的函数时:
int main() {
char *exmaze[][6] = { {"#","#","#","#","#","#"},
{"S","a","#","h","l","n"},
{"#","b","d","p","#","#"},
{"#","#","e","#","k","o"},
{"#","g","f","i","j","#"},
{"#","#","#","#","#","#"}
};
generate_all_paths(6, *exmaze, 1, 0);
return 0;
}
我的 IDE 抱怨没有 generate_all_paths 函数与其参数匹配的数据类型。
我相当确定我的问题主要出在我定义 exmaze 的地方,但我的调整无法修复它。
有人有什么建议吗?谢谢!
*exmaze
- 为什么取消引用? generate_all_paths(6, exmaze, 1, 0)
将按值传递指针 - 我想这就是您在这种情况下想要的。
您没有显示什么是 size
,但只要确保它是编译时已知常量即可。
此外,像这样的问题几乎总是会得到使用标准容器的建议,例如 std::vector
所以我不会错过。
在我看来,使用模板是最优雅的方式:
template<int size>
void generate_all_paths(const char *maze[][size], int x, int y) {
...
}
int main() {
const char *exmaze[][6] = { {"#","#","#","#","#","#"},
{"S","a","#","h","l","n"},
{"#","b","d","p","#","#"},
{"#","#","e","#","k","o"},
{"#","g","f","i","j","#"},
{"#","#","#","#","#","#"}
};
generate_all_paths(exmaze, 1, 0);
return 0;
}
另请注意 const char[][]!
我在为我编写的函数匹配数据类型时遇到问题,
函数是:
void generate_all_paths(int size, char *maze[][size], int x, int y) {
...
}
这个参数size,x,y都超级简单。我相信是迷宫让我失望了。它旨在成为一个多维大小 x 大小的数组,包含字母表中的字符,就像一个迷宫。
当我尝试这样调用 main 中的函数时:
int main() {
char *exmaze[][6] = { {"#","#","#","#","#","#"},
{"S","a","#","h","l","n"},
{"#","b","d","p","#","#"},
{"#","#","e","#","k","o"},
{"#","g","f","i","j","#"},
{"#","#","#","#","#","#"}
};
generate_all_paths(6, *exmaze, 1, 0);
return 0;
}
我的 IDE 抱怨没有 generate_all_paths 函数与其参数匹配的数据类型。
我相当确定我的问题主要出在我定义 exmaze 的地方,但我的调整无法修复它。
有人有什么建议吗?谢谢!
*exmaze
- 为什么取消引用? generate_all_paths(6, exmaze, 1, 0)
将按值传递指针 - 我想这就是您在这种情况下想要的。
您没有显示什么是 size
,但只要确保它是编译时已知常量即可。
此外,像这样的问题几乎总是会得到使用标准容器的建议,例如 std::vector
所以我不会错过。
在我看来,使用模板是最优雅的方式:
template<int size>
void generate_all_paths(const char *maze[][size], int x, int y) {
...
}
int main() {
const char *exmaze[][6] = { {"#","#","#","#","#","#"},
{"S","a","#","h","l","n"},
{"#","b","d","p","#","#"},
{"#","#","e","#","k","o"},
{"#","g","f","i","j","#"},
{"#","#","#","#","#","#"}
};
generate_all_paths(exmaze, 1, 0);
return 0;
}
另请注意 const char[][]!