Per*_*tto 1 c++ constructor struct
我需要在struct内部创建一个struct。如何正确编码构造函数?我需要分别为A和B创建两个构造函数,还是可以像下面的示例一样仅为A使用一个“外部”构造函数?我的尝试导致C2597错误。
struct A
{
struct B
{
unsigned n;
int* d;
};
A(unsigned c)
{
B::n = c; // C2597
B::d = new int[c]; // C2597
}
};
Run Code Online (Sandbox Code Playgroud)
您需要使成员成为B静态成员(但在这种情况下,对于Windows,对于整个程序或dll,将只有一个值):
struct A
{
struct B
{
static unsigned n;
static int* d;
};
A(unsigned c)
{
B::n = c;
B::d = new int[c];
}
};
Run Code Online (Sandbox Code Playgroud)
或创建以下实例B:
struct A
{
struct B
{
unsigned n;
int* d;
};
A(unsigned c)
{
B b;
b.n = c;
b.d = new int[c];
}
};
Run Code Online (Sandbox Code Playgroud)
如果您想A包含B-这就是您需要做的:
struct A
{
struct B
{
unsigned n;
int* d;
} b;
A(unsigned c)
{
b.n = c;
b.d = new int[c];
}
};
Run Code Online (Sandbox Code Playgroud)