比如:
void func(int) {
std::cout << "In func";
}
void test(void(*func)(int)) {
func(1);
}
int main() {
test([](int a){std::cout << "lambda" << a;});
}
如何設定形參,讓test() 函式接受這樣的 lambda 函式,多了個&,可以引入外部變數:
int main() {
int b = 9;
test([&](int a){std::cout << "lambda" << a << b;});
}
uj5u.com熱心網友回復:
你這是要把一個lambda運算式轉為函式指標,規則是允許的,但是那個要轉化的lambda不能有捕獲uj5u.com熱心網友回復:
#include <iostream>
using namespace std;
void funcx(int) {
std::cout << "In func" << endl;
}
template<typename F>
void test(F func) {
func(1);
}
int main() {
int b=10;
test(funcx);
test([&](int a) {std::cout << "lambda " << a << " " << b<< endl; });
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/238803.html
標籤:C++ 語言
上一篇:vs code無法搜索中文的問題
