Я хочу инициализировать размерный массив шаблонов объектов с конструкторами не по умолчанию, как показано в следующем коде:Как инициализировать массив размера шаблона?
#include <array>
template<std::size_t N>
class Foo
{
public:
class Bar
{
Foo<N> & _super;
public:
Bar(Foo<N> *super) :
_super(*super)
{
}
};
std::array<Bar, N> _array;
Foo(void) :
_array{{}} // We need {this, ...} N times
{
}
};
int main(void)
{
Foo<3> foo;
(void)foo;
return 0;
}
ли способ сказать: «Я хочу, чтобы массив N объектов, инициализированы с этим такой же параметр "? Я думаю, что есть способ мета-программирования шаблонов, но я не могу понять, как это сделать.
Не должен быть конструктором 'Bar'' Bar (Foo & super): _super (super) '? Или член 'Foo & _super' должен быть' Foo * _super'? –
wally
@flatmouse ничего не меняет, нет? Я мог бы написать его и построить Bar, как следует «Bar (* this)»; но это не помогает решить вопрос. – Boiethios
Ах, ну, вы берете указатель, который затем откладывается для инициализации ссылочного элемента. Я пытался понять. Я получаю это сейчас. – wally