是否可以创建一个带有可变数量参数的模板函数,例如,在此类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 )产生预期的效果.有没有一种首选方式来做这样的事情?
这个问题与这里的帖子有关.是否可以在函数调用或构造函数调用中初始化数组?例如,类foo的构造函数需要一个大小为3的数组,所以我想调用foo({0,0,0}).我试过这个,但它不起作用.我希望能够在其他对象的构造函数初始化列表中初始化foo类型的对象,或者在不首先创建单独的数组的情况下初始化foo.这可能吗?