我想初始化对象的模板大小的数组没有默认的构造函数,如以下的代码:如何初始化模板大小的数组?
#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