Я новичок в использовании шаблонов C ++, в общем, наткнулся на шаблоны с переменными параметрами, и мне было интересно, могут ли они быть подходящими для моих нужд.
У меня есть этот код, и он работает нормально:
template< typename T, typename X1, typename X2 >
class MyClass
{
public :
MyClass( std::shared_ptr< T > track ,
std::shared_ptr< X1 > x1 ,
std::shared_ptr< X2 > x2 ) ;
}
template< typename T, typename X1, typename X2 >
MyClass < T,X1,X2 >::MyClass( std::shared_ptr< T > track ,
std::shared_ptr< X1 > x1 ,
std::shared_ptr< X2 > x2 ) : d_track( track ) , d_x1( x1), d_x2( x2 )
но, скажем, я хочу сделать его более общим - это означает, что X1, X2 может быть случайным числом - например, Я могу иметь X3 и X4. Я хочу избежать дублирования конструктора для всех разных случаев, которые у меня могут быть, поскольку они пока неизвестны - вариативные шаблоны - это решение?
В черновике кода я имею в виду что-то вроде:
template< typename T, typename... XS >
MyClass < T,???? >::MyClass( std::shared_ptr< T > track ,
std::shared_ptr< ?? > x1 ,
std::shared_ptr< ?? > x2 ,
.......) :
Но я не знаю, как выразить отношения между XS и всем X1 ... XN, так что, по сути, когда я создаю свой класс, как я делаю сейчас:
MyClass< T, X1, X2 > local(.....)
это будет работать, даже когда я прохожу X3, X4 и т. Д.
Не уверен, что это возможно, хотя.