C++ 我如何制作一个动态构造函数,在c++;?

C++ 我如何制作一个动态构造函数,在c++;?,c++,C++,例如: my_constructor(int,int,...); struct foo { std::vector<int> v; foo(std::initializer_list<int> init) : v(init.begin(), init.end()) { } }; 可以有用户输入的任意多个整数 这可能吗?如果它们都是相同类型的参数,只需使用初始值设定项列表即可 structfoo { foo(std::初始值设定项

例如:

my_constructor(int,int,...);
struct foo
{
    std::vector<int> v;

    foo(std::initializer_list<int> init)
      : v(init.begin(), init.end())
    { }

};
可以有用户输入的任意多个整数


这可能吗?

如果它们都是相同类型的参数,只需使用初始值设定项列表即可

structfoo
{
foo(std::初始值设定项\列表初始化)
{
....
}
}
但是,您仍然需要将这些内容添加到某种容器中(例如):

structfoo
{
std::向量v;
foo(std::初始值设定项\列表初始化)
:v(init.begin(),init.end())
{ }
};

按照你的说法,我认为这是不可能的。如何将所有这些参数分配给字段?您需要为对象动态生成不同的字段!我几乎可以肯定那是不可能的。但是,您可以做的是让构造函数将数组作为其参数的一部分,您可以使用不同数量的“子参数”填充数组。
祝你好运。

我也在想同样的事情,但我忘了提到参数都是相同的数据类型,因此Yuushi的建议似乎解决了我的问题。谢谢你!对于不同的类型,您可以使用可变模板并将它们存储在
std::tuple
中。
struct foo
{
    std::vector<int> v;

    foo(std::initializer_list<int> init)
      : v(init.begin(), init.end())
    { }

};