Указатель функции "не был объявлен в этой области"
На вершине main
Функция в сценарии C++, я определяю указатель функции на основе аргумента командной строки следующим образом:
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
в этом объеме. В чем дело? (Я могу опубликовать всю мою основную функцию, если это будет полезно, но это довольно долго.)
1 ответ
Вы объявляете две разные переменные, каждая из которых называется get_V
оба локально в рамках if
заявления. Как только код внутри if
утверждение сделано, этих переменных больше нет, они вышли из области видимости.
Простое решение? Объявите переменную вне if
заявления, и делать только задания в if
ведомости тел.