Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 通过c+中的包装器将构件列表传递给构造函数+;_C++_Templates_Boost_Constructor_Stl - Fatal编程技术网

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

C++ 通过c+中的包装器将构件列表传递给构造函数+;,c++,templates,boost,constructor,stl,C++,Templates,Boost,Constructor,Stl,我想写一个包装函数,我可以向它传递一些类对象的构造函数初始化参数。然后,该包装器将使用该列表并在定义该类的新对象时传递给构造函数。不确定用于此目的的STL或任何其他数据类型。基本上在下面的代码中,参数列表应该使用什么数据类型。有什么图书馆可以帮忙吗 透视图的一些代码 abc类{ INTA_; char b_; 公众: abc(整数a,字符b) :a_(a),b_(b) { } } //包装纸 样板 void create\u object\u wrapper(参数列表)//假设参数列表可以 //

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

透视图的一些代码

abc类{
INTA_;
char b_;
公众:
abc(整数a,字符b)
:a_(a),b_(b)
{
}
}
//包装纸
样板
void create\u object\u wrapper(参数列表)//假设参数列表可以
//将参数保持为
//有意
{
abc v1(列表);//我想要的用例
}      
int main()
{
创建对象包装器(1,'a');//用(1,'a')初始化对象
返回0;
}

提前感谢。

使用模板参数包:

template <typename... Args>
void create_object_wrapper(Args... list)
{
     abc v1(list...);
}  
模板
无效创建对象包装(参数…列表)
{
abc v1(列表…);
}  

如果使用导致无效的构造函数调用的参数调用此函数,则编译将失败。

使用模板参数包:

template <typename... Args>
void create_object_wrapper(Args... list)
{
     abc v1(list...);
}  
模板
无效创建对象包装(参数…列表)
{
abc v1(列表…);
}  

如果使用导致无效的构造函数调用的参数调用此函数,则编译将失败。

使用变量完美转发:

template <typename... Args>
void create_object_wrapper(Args&&... list)
{
     abc v1(std::forward<Args>(list)...);
}  
模板
无效创建对象包装(参数和…列表)
{
abc v1(标准:转发(列表)…);
}  

使用可变完美转发:

template <typename... Args>
void create_object_wrapper(Args&&... list)
{
     abc v1(std::forward<Args>(list)...);
}  
模板
无效创建对象包装(参数和…列表)
{
abc v1(标准:转发(列表)…);
}  

如果您想根据提供的参数立即创建对象,请遵循sehe的答案


如果要存储为以后创建一个或多个对象而提供的参数,则应使用
std::tupel
。按照中给出的答案进行操作,看看如何做到这一点。理想情况下,您希望使用C++14(请参见我对该问题的回答)。

如果您希望根据提供的参数立即创建对象,请遵循sehe的答案


如果要存储为以后创建一个或多个对象而提供的参数,则应使用
std::tupel
。按照中给出的答案进行操作,看看如何做到这一点。理想情况下,您希望使用C++14(请参阅我对该问题的回答)。

您可能想了解,您可能想了解,如果参数列表中的某个类型是仅移动类型,它也会失败。如果参数列表中的某个类型是仅移动类型,它也会失败。