通过 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(请参阅我对该问题的回答)。
我想编写一个包装函数,我可以将某些 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(请参阅我对该问题的回答)。