我正在繼續研究C++,並且遇到了lambda表達式。 我下面一個簡單的教程只是爲了感受一下的sintax,但下面的代碼失敗:C++:將帶參數的lambdas傳遞給函數
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
void runDivide(double (*divide)(double a, double b)) {
auto rval = divide(a , b);
cout << rval << endl;
}
int main() {
auto funcDiv = [](double value1, double value2) -> double{
if (value2 == 0.0) {
return 0;
}
return value1/value2;
};
runDivide(funcDiv);
system("pause");
return 0;
}
這是給我一個「標識符「一個未定義」和「標識‘B’被未定義」。雖然我從教程中複製了verbatin,也許我錯過了一些東西?
在此先感謝您的幫助!
邁克爾
你忘了傳遞函數參數。 – juanchopanza
'runDivide()'中沒有變量'a'和'b'。 – Barmar
而不是複製嘗試瞭解代碼的作用。如果你明白了,那麼你就會明白'a'和'b'沒有在任何地方定義過。它們僅僅是函數指針的類型。 – tambre