最近因为项目要求用c++,之前一直很讨厌c++,没办法只能短时间弥补c++的知识,项目中需要定义一个函数指针类型的vector,本以为很简单的问题,结果调试了一天,才发现错在哪里。
多余的std::function
先上代码吧,这里有一个测试代码,为什么要有测试代码?是因为下面的方式我在最开始验证该种实现时打印的地址是对的,但是之后一段时间就不对了,所以摘出来写了一个测试代码。
代码非常简单:使用using std::function的方式定义一个函数指针类型func_t,然后实现三个print函数,在main函数中定义一个vector存放三个函数的地址,打印三个函数的实际地址,之后遍历vector打印存放的元素值。
#include
#include
#include
// 定义 std::function 类型的函数指针别名
using func_t = std::function;
// 示例函数
void print(int x, void* y, size_t a, size_t b, void* c) {
std::cout