C ++ - 具有任意args数的函数指针

时间:2015-02-13 23:18:56

标签: c++ function-pointers argument-passing

我正在尝试创建一个CPP函数,它接受一个函数指针和任意数量的参数,添加一些坐标,然后调用函数指针:

int func_api(void(*fun)(int, int, ...args), ...args) {
    fun(this.x, this.y, args);
}

所以我可以这样使用它:

int func(int x, int y, int param1, int param2) {
    something;
}

int foo () {
    func_api(p1, p2);
}

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:1)

使用可变参数模板

template <typename Func, typename ... Args>
int func_api(Func fun, Args&&... args)
{
 fun(this->x, this->y, std::forward<Args>(args)...);
}

您现在可以这样称呼它:

func_api(func, p1, p2);