【问题标题】:C++ - Function pointer with arbitrary number of argsC++ - 具有任意数量参数的函数指针
【发布时间】:2015-04-15 03:08:30
【问题描述】:

我正在尝试创建一个 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);
}

有没有办法做到这一点?

【问题讨论】:

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


【解决方案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);

【讨论】:

    猜你喜欢
    • 2018-02-11
    • 1970-01-01
    • 2012-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多