C++自定义函数结构体
时间: 2024-12-24 16:16:05 浏览: 3
在C++中,你可以通过将函数作为数据成员放在结构体(struct)中来创建自定义函数结构体。这种设计通常用于创建回调函数或通用的操作指针,使得函数可以像其他结构体字段一样传递和存储。这样的结构被称为“functor”或“function object”。
例如:
```cpp
template <typename Ret, typename... Args>
struct MyFunctor {
Ret (*func)(Args...); // 函数指针类型
// 构造函数,设置函数指针
MyFunctor(Ret (*pfn)(Args...)) : func(pfn) {}
// 调用函数
Ret operator()(Args... args) {
return func(args...);
}
};
// 使用示例
void sayHello(const std::string& name) {
std::cout << "Hello, " << name << "!" << std::endl;
}
int main() {
MyFunctor<void, std::string> helloFunctor(sayHello);
helloFunctor("Alice"); // 输出 "Hello, Alice!"
return 0;
}
```
在这个例子中,`MyFunctor`是一个模板结构,它有一个指向特定返回类型和参数类型的函数指针。我们可以通过构造函数给`func`赋值,然后通过`.`运算符或者`()`调用该函数。
阅读全文