使用 Lambda 表达式,在模板类中定义一个函数,当满足某个条件时,调用这个函数,然后在这个函数中输出触发内容。传递参数
时间: 2024-02-18 20:03:54 浏览: 61
以下是在模板类中使用 Lambda 表达式定义一个函数,并在满足条件时调用这个函数的示例代码:
```cpp
#include <functional>
#include <QDebug>
template<typename T>
class MyTemplateClass {
public:
void doSomething(T value) {
// 定义 Lambda 表达式
std::function<void(T)> onTriggered = [&](T param) {
if (param == value) {
qDebug() << "MyTemplateClass triggered with value:" << value;
}
};
// 调用 Lambda 表达式
onTriggered(value);
}
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建 MyTemplateClass 对象并调用 doSomething() 方法
MyTemplateClass<int> myTemplateClass;
myTemplateClass.doSomething(10);
myTemplateClass.doSomething(20);
return a.exec();
}
```
在这段代码中,我们在模板类 MyTemplateClass 中定义了一个函数 doSomething(),该函数接受一个参数 value。在 doSomething() 方法中,我们定义了一个 Lambda 表达式 onTriggered,它接受一个参数 param。Lambda 表达式中,我们检查了参数是否等于 value,如果是,则输出一条信息。
接下来,我们在 doSomething() 方法中调用了 onTriggered() 函数,并传递了参数 value。在主函数中,我们创建了一个 MyTemplateClass 对象,并分别以 10 和 20 作为参数调用了它的 doSomething() 方法。由于参数 10 符合条件,因此输出了一条信息,而参数 20 则不符合条件,没有输出任何信息。
阅读全文