我如何创建一个接受可变数量的int的C ++构造函数

斯塔凡·古斯塔夫森(Staffan Gustafsson)

是否可以限制可变参数构造函数中的参数类型?

我想能够表达

X x1(1,3,4);
X x2(3,4,5);

// syntax error: identifier 'Args'
class X {
template<int ... Args> X(Args...)
{
}
};
// this works but allows other types than int
class Y {
template<typename ... Args> Y(Args...)
{
}
};

编辑以澄清意图:

我要实现的是将传递给构造函数的数据(在编译时已知的常数)存储到静态数组中。

所以还有其他一些

template<int ...values>
struct Z
{
    static int data[sizeof...(values)];
};

template<int ... values>
int Z<values...>::data[sizeof...(values)] = {values...};

并且在XI的构造函数中想像这样使用Z:

class X {
    template<int ... Args> X(Args...)
    {
        Z<Args...>::data // do stuff with data
    }
};

那有可能吗,我们必须使用integer_sequence吗?

用户名

由于您具有以下条件:

template<int... values>
struct Z
{
    static int data[ sizeof...( values ) ];
};

template <int... values>
int Z<values...>::data[ sizeof...( values ) ] = { values... };

您可以std::integer_sequence<>用来将int传递给Z<>

struct X
{
    template <int... values>
    X( std::integer_sequence<int, values...> )
    {
        for ( int i{ 0 }; i < sizeof...( values ); ++i )
            Z<values...>::data[ i ]; // do stuff with data
    }
};

您可以使自己成为帮助者类型,以便轻松调用ctor:

template <int... values>
using int_sequence = std::integer_sequence<int, values...>;

然后,您可以像这样实例化您的课程:

int main()
{
    X x( int_sequence<1, 3, 5>{} );
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何创建一个接受可变数量的int的C ++构造函数

来自分类Dev

如何创建一个连接可变数量矩阵的函数?

来自分类Dev

如何编写一个函数,该函数接受可变数量的参数(整数)并使用stdargs输出它们?

来自分类Dev

如何在C ++中编写一个函数,该函数采用可变数量的double向量?

来自分类Dev

创建一个构造函数,它可以接受任意数量的参数

来自分类Dev

如何用可变数量的参数定义一个函数?

来自分类Dev

如何在YARD中用可变数量的参数记录一个函数?

来自分类Dev

如何为自定义数组类创建一个构造函数,该构造函数可以接受任意数量的参数,直到数组大小为止?

来自分类Dev

Javascript TypeError:...不是构造函数-如何从构造函数构造函数?

来自分类Dev

C ++-构造函数调用构造函数

来自分类Dev

具有可变数量和参数类型的C ++函数作为另一个函数的参数

来自分类Dev

具有可变数量参数的Scala类构造函数

来自分类Dev

构造函数使用可变数量的右值引用

来自分类Dev

无法创建对-构造函数

来自分类Dev

如何定义构造函数?

来自分类Dev

如何隐藏构造函数?

来自分类Dev

如何区分构造函数

来自分类Dev

如何定义构造函数?

来自分类Dev

如何覆盖构造函数?

来自分类Dev

如何编写一个带有可变数量的参数(整数)并使用stdargs输出它们的函数?

来自分类Dev

C ++构造函数参数

来自分类Dev

C ++构造函数故障

来自分类Dev

C ++结构构造函数

来自分类Dev

C ++构造函数功能

来自分类Dev

C ++构造函数调用

来自分类Dev

C ++ wstring构造函数

来自分类Dev

C ++构造函数继承

来自分类Dev

继承的C ++构造函数

来自分类Dev

C ++结构构造函数

Related 相关文章

热门标签

归档