为什么我的函数参数不匹配

Why are my function parameters not matching up?

本文关键字:不匹配 参数 函数 我的 为什么      更新时间:2023-10-16

我有一个名为generate_all_paths的函数,定义如下:

template <int size>
void generate_all_paths(vector<string> maze[][size], int x, int y) {
....
}

我试图在我的主函数中调用它,如下:

int main() {
  string s;
  ifstream mazefile("maze.txt");
  if (!mazefile) {
      cout << "File not found. Please try again." << endl;
  }
  while (getline(mazefile, s)) {
      mazevec.push_back(s);
  }
  generate_all_paths(mazevec, 0, 1);
  return 0;
}

其中mazevec为vector<string> mazevec;

但是我的IDE说我在main中调用generate_all_paths与函数定义不匹配。我有点不明白为什么会这样。mazevec是一个向量字符串,所以参数数据类型不应该匹配吗?

您传递给函数的mazevec是vector<string>。你的函数定义表明它需要一个2D向量数组。在函数原型中,将其更改为:

void generate_all_paths(vector<string> maze, int x, int y);

您必须传递一个数组,但您已经传递了一个不是数组的变量。所以它们被看作是两个不同的函数。请传递vector类型的数组,然后再试一次