函数调用中的数据类型不匹配

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[][]!