函数指针"was not declared in this scope"

Function pointer "was not declared in this scope"

在 C++ 脚本中 main 函数的顶部,我定义了一个基于命令行参数的函数指针,如下所示:

int main(int argc, char *argv[])
{

  // Set integration method.
  const char* method = argv[argc - 1];
  if (strcmp(method, "euler") == 0)
    {
      std::vector<double> (*get_V)(const std::vector<double> &, const double,
                                   const std::vector<double> &);
      get_V = euler;
    }
  else if (strcmp(method, "exact") == 0)
    {
      std::vector<double> (*get_V)(const std::vector<double> &, const double,
                                   const std::vector<double> &);
      get_V = exact;
    }
  else
    {
      throw std::invalid_argument("Invalid method supplied at command line.");
    }

我的目标是根据命令行参数将变量 get_V 设置为指向函数 euler 或函数 exact 的指针。

稍后,还是在main函数里面,我调用get_V如下:

V = get_V(V, Delta_t, dV_dt);

当我尝试编译时,这一行——我在其中调用 get_V——引发了以下错误:

(master)dbliss@nx3[dopa_net]> g++ -O3 hansel.cpp -o hansel.o
hansel.cpp: In function ‘int main(int, char**)’:
hansel.cpp:65: error: ‘get_V’ was not declared in this scope

这对我来说毫无意义。我在此范围内做了声明get_V。这是怎么回事? (如果有帮助的话,我可以 post 我的整个主要功能,但它相当长。)

您声明了两个不同的变量,每个变量都命名为 get_V,它们都位于 if 语句的局部范围内。一旦 if 语句中的代码完成,那些变量就不再存在,它们已经超出范围。

简单的解决方案?在if语句外声明变量,只在if语句体中赋值。