在C++中有没有一种方法可以创建一个模板类,它可以在构造函数中接受任意数量的参数,并且可以在需要时获取这些参数?
范例:
#include <string>
template<size_t Size, typename... Types>
class Container
{
public:
Container(Types... args)
{
// add checks to see if Size = no args
}
void get(Types&... args)
{
// getter method
}
};
int main()
{
Container<3, int, double, std::string> container(10, 2.5, "smth");
int a{};
double b{};
std::string c {};
container.get(a, b, c);
// expect a = 10, b = 2.5, c = "smth"
return 0;
}
字符串
2条答案
按热度按时间b09cbbtk1#
是的,您的问题的解决方案已经以
std::tuple
的形式存在:字符串
你可以实现一个 Package
std::tuple
的容器,但它并没有真正提供任何std::tuple
还没有提供的实用程序,所以我们可以直接使用它:型
请记住,在泛型编程之外,您最好创建自己的
struct
,为类型和成员使用有意义的名称。型
ru9i0ody2#
在C++中有没有一种方法可以创建一个模板类,它可以在构造函数中接受任意数量的参数,并且可以在需要时获取这些参数?
是的,在这里简单地使用
std::tuple
。是否应该将其 Package 到类模板中,取决于进一步的需求。字符串
*See a live demo in godbolt.org