C ++中的嵌套可变参数函数

时间:2014-03-26 01:53:40

标签: c++ variadic-functions

我正在尝试使用variadic函数创建包装器。但是,我在Visual Studio 2013中从operand of sizeof may not be a function收到func_t func = va_arg(args, func_t);错误。不允许在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;
}

1 个答案:

答案 0 :(得分:3)

你只需要使func_t指向函数指针而不是函数....

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

请参阅http://ideone.com/cF48S7