【问题标题】:Can an unnamed struct be made static?可以将未命名的结构设为静态吗?
【发布时间】:2018-02-10 14:38:32
【问题描述】:
你能让一个未命名的结构成为一个类的静态成员吗?
struct Foo
{
struct namedStruct
{
int memb1, memb2;
};
static namedStruct namedStructObj;
struct
{
int memb1, memb2;
} unnamedStructObj;
};
Foo::namedStruct Foo::namedStructObj;
// The unnamed type doesn't seem to have a type you can write
【问题讨论】:
标签:
c++
static
unnamed-class
【解决方案1】:
是的,有可能:
struct Foo
{
struct
{
int memb1, memb2;
} static unnamedStructObj;
};
decltype(Foo::unnamedStructObj) Foo::unnamedStructObj;
这里,由于您无法引用未命名的结构,因此使用decltype(Foo::unnamedStructObj) 可以检索Foo::unnamedStructObj 的类型,因此您可以编写定义。
【解决方案2】:
你可以在decltype()的帮助下做到这一点:
struct Foo
{
struct namedStruct
{
int memb1, memb2;
};
static namedStruct namedStructObj;
static struct
{
int memb1, memb2;
} unnamedStructObj;
};
Foo::namedStruct Foo::namedStructObj;
decltype(Foo::unnamedStructObj) Foo::unnamedStructObj;