Можете ли вы сделать неназванную структуру статическим членом класса?
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
Да, это возможно
struct Foo
{
struct
{
int memb1, memb2;
} static unnamedStructObj;
};
decltype(Foo::unnamedStructObj) Foo::unnamedStructObj;
Здесь, так как вы не можете ссылаться на безымянную структуру, используя decltype(Foo::unnamedStructObj)
позволяет получить тип Foo::unnamedStructObj
, так что вы можете написать определение.
Вы можете сделать это с помощью 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;