Сообщение Инициализация массива класса через шаблон от 01.09.2015 3:02
Изменено 01.09.2015 3:39 koenjihyakkei
Можно ли через variadic tamplates (или как-то еще) инициализировать массив в классе?
Например, как-нибудь так:
Например, как-нибудь так:
typedef bool (*fnCheck)(Object1&, Object2&);
template<fnCheck ... A>
class Foo
{
public:
Foo() : array(A...) {} // error
bool check() {
// перебор массива, например
}
private:
fnCheck array[sizeof...(A)];
};
// и вот так использовать:
Foo<fn1, fn2, fn3> checker1;
Foo<fn2, fn3> checker2;
Foo<fn3, fn2, fn4, fn6> checker2;
Инициализация массива класса через шаблон
Можно ли через variadic tamplates (или как-то еще) инициализировать массив в классе?
Например, как-нибудь так:
Update
Нашел способ обернуть массив в структуру, вот так — http://ideone.com/NbRQEu
Не очень красиво, но вполне приемлемо, пока других вариантов нет.
Например, как-нибудь так:
typedef bool (*fnCheck)(Object1&, Object2&);
template<fnCheck ... A>
class Foo
{
public:
Foo() : array(A...) {} // error
bool check() {
// перебор массива, например
}
private:
fnCheck array[sizeof...(A)];
};
// и вот так использовать:
Foo<fn1, fn2, fn3> checker1;
Foo<fn2, fn3> checker2;
Foo<fn3, fn2, fn4, fn6> checker2;
Update
Нашел способ обернуть массив в структуру, вот так — http://ideone.com/NbRQEu
Не очень красиво, но вполне приемлемо, пока других вариантов нет.