Вам нужно либо сделать члены B
статическими (но в этом случае у вас будет одно значение для всей программы или dll в случае Windows):
struct A
{
struct B
{
static unsigned n;
static int* d;
};
A(unsigned c)
{
B::n = c;
B::d = new int[c];
}
};
или создайте экземпляр B
:
struct A
{
struct B
{
unsigned n;
int* d;
};
A(unsigned c)
{
B b;
b.n = c;
b.d = new int[c];
}
};
Если вы имели в виду A
, чтобы содержать B
- это то, что вам нужно сделать:
struct A
{
struct B
{
unsigned n;
int* d;
} b;
A(unsigned c)
{
b.n = c;
b.d = new int[c];
}
};