【发布时间】:2015-11-23 06:35:11
【问题描述】:
在 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。这是怎么回事? (如果有帮助,我可以发布我的整个 main 函数,但它相当长。)
【问题讨论】:
-
您在块内声明了
get_V。当该块结束时,其中的所有本地人都会超出范围。 -
@JamesRoot 啊,我习惯了 python,其中 if 语句没有定义单独的范围。谢谢。
标签: c++ function pointers scope functor