我想知道这样的事情是否可行。我还尝试通过声明上面的类和构造函数,然后在下面构建一个对象并使构造函数运行所有行。它不接受函数中的构造函数定义,即myclass::myclass() { /*definition*/}
void present();
// I was hoping this would let the below code know of the lambda.
if (GFX::bFPSLimitOn) {
if (frameLatency > 1.0 / GFX::FPSLimit) present();
else return;
} else present();
auto present = [&]() {
GFX::clearScreen();
GFX::renderScene(activeCamera);
GUI::renderGUI();
GFX::presentScreen();
lastFramePresentTimestamp = currentTime;
};
答案 0 :(得分:3)
不,你不能转发声明一个lambda。当你创建一个lambda时,你会得到一些编译器生成的命名类类型。你不知道那个名字是什么,所以你不能转发声明它。
如果你需要向前宣布它,那么很可能你需要编写一个仿函数,因为你知道这个名字。