using FrameCallback=std::function<void(void)>; extern FrameCallback frameCallback_; frameCallback_如何赋值
时间: 2024-09-09 08:08:43 浏览: 46
编舞者:Choreographer
`std::function` 是 C++11 中引入的一个非常重要的特性,它是一种通用的函数封装器,能够存储、复制和调用任何类型的可调用实体。`std::function` 可以存储的可调用实体包括普通函数、lambda 表达式、函数对象以及其他函数封装器等。
在这个例子中,`FrameCallback` 是一个 `std::function` 类型,它代表了一个没有参数并且没有返回值的函数类型。`extern FrameCallback frameCallback_;` 这行代码声明了一个全局变量 `frameCallback_`,它可以在程序的其他部分被赋值和使用。
`frameCallback_` 可以赋值为任何符合以下签名的可调用实体:
```cpp
void someFunction(); // 普通函数
auto lambda = []() { /* lambda表达式 */ };
class functor {
public:
void operator()() {
// 函数对象
}
};
```
下面是如何给 `frameCallback_` 赋值的例子:
```cpp
// 普通函数
void myFunction() {
// 函数体
}
// 赋值
frameCallback_ = myFunction;
// lambda表达式
frameCallback_ = []() {
// lambda体
};
// 函数对象
class MyFunctor {
public:
void operator()() {
// functor的函数体
}
};
MyFunctor functorInstance;
frameCallback_ = functorInstance;
// 也可以在声明的时候直接赋值
extern FrameCallback frameCallback_ = []() {
// lambda体
};
```
在使用 `frameCallback_` 之前,必须确保它已经被正确赋值。如果它没有被赋值,调用它将是一个运行时错误。
阅读全文