在一個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)[email protected][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
。這是怎麼回事? (我可以張貼我的整個主函數如果這會是有益的,但它是相當長的。)
您在塊內聲明瞭'get_V'。當該塊結束時,其中的所有當地人都超出範圍。 –
@JamesRoot啊,我習慣於Python,其中如果語句沒有定義一個單獨的範圍。謝謝。 – dbliss