如何将函数参数定义为其他函数参数

问题描述 投票:0回答:1

例如如何刺穿 Wrapper::call_to_func 该参数列表 call_to_func 应该是 func

class A
{
    void func(int, char, double);
};

template<class T>
class Wrapper
{
public:
    void call_to_func(....)
    {
          m_t.func(....)
    }

    T m_t;
}
c++ c++11
1个回答
0
投票

您可以将

call_to_func
制作为可变参数方法模板,并使用
std::forward
将参数完美转发给
func
:

#include <iostream>

class A {
public:
    void func(int i, char c, double d) {
        std::cout << "func" << " " << i << " " << c << " " << d << "\n";
    }
};

template<class T>
class Wrapper {
public:
    template <typename ... Ts>
    void call_to_func(Ts ... args) {
        m_t.func(std::forward<Ts>(args)...);
    }

    T m_t;
};

int main() { 
    Wrapper<A> w;
    w.call_to_func(1, 'a', 2.3);
}
© www.soinside.com 2019 - 2024. All rights reserved.