我将一个二维数组传递给标记函数。
void mark(int n, int m, int i, int j, int canvisit[][m], int a[][m]){}这段代码在C语言中可以很好地工作在代码块上,但是在C++中,我得到的错误如下:
prog.cpp:9:55: error: use of parameter outside function body before ']' token
void mark(int n, int m, int i, int j, int canvisit[][m], int a[][m]){
^
prog.cpp:9:56: error: expected ')' before ',' token
void mark(int n, int m, int i, int j, int canvisit[][m], int a[][m]){
^
prog.cpp:9:58: error: expected unqualified-id before 'int'
void mark(int n, int m, int i, int j, int canvisit[][m], int a[][m]){我在这里做错什么了吗?我用int m给出了之前的列数,这是用C写的,而不是C++。任何帮助都将不胜感激。
发布于 2015-11-15 09:37:23
您声明的数组参数是https://en.wikipedia.org/wiki/Variable-length_array,这些参数在C++中是不允许的。您必须以其他方式解决问题,例如使用模板、std::vector或std::array。
请记住,C和C++是两种非常不同的语言。C++可能最初是从C开发出来的,它们在许多方面共享语法,但是它们仍然是不同的语言,有不同的规则。
发布于 2015-11-15 09:37:06
只有C支持可变长度数组,C++不支持。C++标准规定数组的大小必须是一个常量表达式。
使用std::vector代替。声明应该是
void mark(int n, int m, int i, int j, vector< vector<int> > &canvisit, vector< vector<int> > &a);https://stackoverflow.com/questions/33718225
复制相似问题