c++中的嵌套可变函数

Nested variadic function in C++

本文关键字:函数 嵌套 c++      更新时间:2023-10-16

我正在尝试使用可变函数制作包装器。然而,我在Visual studio 2013中从func_t func = va_arg(args, func_t);得到了operand of sizeof may not be a function错误。在c++中不允许嵌套可变函数?或者做这份工作还有其他的解决办法吗?

(我跳过了A::Outerfunc的多余部分)

int A::Outerfunc(int nargs, ...) {
    if (nargs != 3) {
        cout << "Wrong argument number: " << std::endl;
        exit(1);
    }
    va_list args;
    va_start(args, nargs);
    typedef double func_t(int nargs, ...);
    double *f = va_arg(args, double *);
    func_t func = va_arg(args, func_t);
    double *fprime = va_arg(args, double *);
    va_end(args);
    return 0;
}

您只需要使func_t成为指向函数的指针,而不是函数....

typedef double (*func_t)(int nargs, ...);

见http://ideone.com/cF48S7