可以将未命名的结构设为静态吗?

Can an unnamed struct be made static?

能否将未命名的结构设为 class 的静态成员?

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;