小编dav*_*vid的帖子

具有可变参数的C++模板类构造函数

是否可以创建一个带有可变数量参数的模板函数,例如,在此类Vector< T, C >构造函数中:

template < typename T, uint C >
Vector< T, C >::Vector( T, ... )
{
    va_list arg_list;
    va_start( arg_list, C );
    for( uint i = 0; i < C; i++ ) {
        m_data[ i ] = va_arg( arg_list, T );
    }
    va_end( arg_list );
}
Run Code Online (Sandbox Code Playgroud)

这几乎可以工作,但如果有人调用Vector< double, 3 >( 1, 1, 1 ),只有第一个参数具有正确的值.我怀疑第一个参数是正确的,因为它double在函数调用期间被转换为a ,而其他参数被解释为ints然后将这些位填充到a中double.通话可以Vector< double, 3 >( 1.0, 1.0, 1.0 )产生预期的效果.有没有一种首选方式来做这样的事情?

c++ templates variadic-functions

10
推荐指数
2
解决办法
2万
查看次数

函数调用或构造函数调用中的C++数组初始化

这个问题与这里的帖子有关.是否可以在函数调用或构造函数调用中初始化数组?例如,类foo的构造函数需要一个大小为3的数组,所以我想调用foo({0,0,0}).我试过这个,但它不起作用.我希望能够在其他对象的构造函数初始化列表中初始化foo类型的对象,或者在不首先创建单独的数组的情况下初始化foo.这可能吗?

c++ arrays constructor initialization

5
推荐指数
1
解决办法
4114
查看次数