为什么我的功能参数不匹配?

时间:2015-06-06 04:12:19

标签: c++ parameters

我有一个名为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是一个矢量字符串,所以参数数据类型不应该匹配吗?

2 个答案:

答案 0 :(得分:2)

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

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

这应该有用。

答案 1 :(得分:0)

你必须传递一个数组,但是你传递了一个不是数组的变量。所以他们被视为两个不同的功能。 请传递一个类型向量数组,然后重试。