C++中如何实现函数表?
时间: 2024-10-20 22:19:29 浏览: 16
在C++中,实现函数表通常涉及到两个关键步骤:声明和动态调用。首先,你需要创建一个`std::vector<std::function<void()>>`或`std::vector<void(*)()>`类型的容器来存储函数指针。这里`void()`表示没有返回值且无参数的函数。
1. **函数声明**:
- 定义一系列静态函数作为你要存储的函数原型,例如:
```cpp
void func1();
void func2();
```
- 或者如果你已经有现成的成员函数或者外部函数,可以用它们的指针:
```cpp
void (MyClass::*funcMember)();
extern void externalFunc();
```
2. **函数表的初始化**:
- 创建函数表,并将函数指针添加到其中:
```cpp
std::vector<void (*)()> functionTable;
functionTable.push_back(&func1);
functionTable.push_back(&func2);
// 或者
functionTable.push_back(std::bind(funcMember, this));
functionTable.push_back(&externalFunc);
```
3. **动态调用**:
- 使用索引来调用函数:
```cpp
int index = ...; // 根据某种条件获取函数索引
if (index < functionTable.size()) {
functionTable[index](); // 调用对应函数
}
```
阅读全文