Chris M. Thomasson
unread,Jan 12, 2017, 10:50:46 PM1/12/17You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to
This is about using aggregate initialization in the constructor of a
struct/class that has an array. Basically, I am wondering if the
following code wrt the constructor of foo is kosher:
______________________________________________
#include <cstdio>
struct foo
{
struct inner
{
unsigned int a;
unsigned int b;
};
inner inner[3];
unsigned int a;
unsigned int b;
foo(
unsigned int a_inner,
unsigned int b_inner
): inner {
{ a_inner, b_inner },
{ a_inner + 1, b_inner + 2 },
{ a_inner + 3, b_inner + 4}
},
a(a_inner + b_inner),
b((a_inner + b_inner) / 2)
{
}
};
int main()
{
{
foo f(3, 5);
std::printf("f.inner[0].a:(%u)\nf.inner[0].b:(%u)\n",
f.inner[0].a, f.inner[0].b);
std::printf("f.inner[1].a:(%u)\nf.inner[1].b:(%u)\n",
f.inner[1].a, f.inner[1].b);
std::printf("f.inner[2].a:(%u)\nf.inner[2].b:(%u)\n",
f.inner[2].a, f.inner[2].b);
std::printf("f.a:(%u)\nf.b:(%u)\n", f.a, f.b);
}
return 0;
}
______________________________________________
Seems to work fine for me.