通过 C++ 中的包装器将参数列表传递给构造函数

passing arument list to a constructor through a wrapper in c++

我想编写一个包装函数,我可以将某些 class 对象的构造函数初始化参数传递给该函数。然后这个包装器将使用这个列表并在定义 class 的新对象时传递给构造函数。不确定用于此目的的 STL 或任何其他数据类型。基本上在下面的代码中,argument_list 应该使用什么数据类型。有什么图书馆可以帮忙吗?

透视的一些代码

class abc{
    int a_;
    char b_;
    public:
    abc(int a, char b)
        :a_(a), b_(b)
    {
    }
}
// Wrapper
template <typename T>
void create_object_wrapper(argument_list list) // assuming argument_list can                              
                                       //hold the parameters as
                                       //intended
{
     abc v1(list); //The use case I want
}      

int main()
{
 create_object_wrapper(1,'a'); // initialize object with (1, 'a')
 return 0;
}

提前致谢。

使用模板参数包:

template <typename... Args>
void create_object_wrapper(Args... list)
{
     abc v1(list...);
}  

如果使用导致无效 abc 构造函数调用的参数调用,将无法编译。

使用可变参数完美转发:

template <typename... Args>
void create_object_wrapper(Args&&... list)
{
     abc v1(std::forward<Args>(list)...);
}  

如果您想根据提供的参数立即创建对象,请按照 sehe 的回答。

如果您想要存储提供的参数以便稍后创建一个或多个对象,那么您应该使用 std::tupel。按照 this question 中给出的答案查看如何完成此操作。理想情况下,您希望为此使用 C++14(请参阅我对该问题的回答)。